MySQLの消したと思っていたテーブルやビューが残っている

【事象】
MySQLスキーマ(データベース)をリストアする際に、以下の様な事を行っていた。
(DB_BACKUP_FILEは、mysqldumpしたバックアップファイルをgzipで固めただけのファイル)

zcat ${DB_BACKUP_FILE} | mysql -u ${DB_USER} -p${DB_PASS} ${DB_SCHEMA}

しかし、クリアしていたと思っていたテーブルやビューが残っていた。

【原因】
バックアップファイルにはスキーマdropする構文が入っていなかった。
そのため、バックアップファイルに存在するテーブルは置換されているが、存在しないテーブルやビューはそのまま残っていたため。

【対応方法】
1.バックアップファイルを作成し直して、drop databaseされる様にする。
2.リストアする前に事前にデータベースやビューを削除する。

(削除例)

----- テーブル削除
mysql -u ${DB_USER} -p${DB_PASS} ${DB_SCHEMA} -N -e 'show tables' | while read dtable; do mysql -u ${DB_USER} -p${DB_PASS} ${DB_SCHEMA} -N -e "drop table ${dtable}"; done
----- ビュー削除
mysql -u ${DB_USER} -p${DB_PASS} ${DB_SCHEMA} -N -e 'show tables' | while read dview; do mysql -u ${DB_USER} -p${DB_PASS} ${DB_SCHEMA} -N -e "drop view ${dview}"; done

・無精しているので、エラー出しながら削除する方式
 必要であれば、きちんとエラーハンドリングすること
・プロシージャなど他のオブジェクトも必要であれば対応する必要有

(SQLでやる方法)
mebee.info

【参考リンク】
tm.root-n.com