回答:
mysqldumpを使用したシンプルなbashワンライナーがあります(Thingy Ma Jig Blogから)。
mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]
このエラーが発生する場合:
ERROR 1217 (23000) at line 1: Cannot delete or update a parent row:
a foreign key constraint fails
以下を試してください:
(echo 'SET foreign_key_checks = 0;';
(mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] |
grep ^DROP);
echo 'SET foreign_key_checks = 1;') | \
mysql -u[USERNAME] -p[PASSWORD] -b [DATABASE]
今では、制約を無視します。
information_schemaテーブルを使用してデータベースに関するメタデータを取得し、そこにリストされているテーブルを削除する必要があります。
簡単なシェルスクリプトを試してみることもできます。
#!/bin/bash
IFS=$'\n'
for table in `mysql <databaseName> -N -e 'show tables'`; do
echo mysql <databaseName> -e "drop table $table"
done
echo
期待どおりに動作することを確認した後、削除します。
ファイルシステムにアクセスできる場合は、単にrm -rf databasename/*
:)。
Drop databaseステートメントも同じことをします... MySQLマニュアルからの抜粋:
DROP DATABASEステートメントは、指定されたデータベースディレクトリから、MySQL自体が通常の操作中に作成する可能性のあるファイルとディレクトリを削除します。