生成されたdropステートメントのセットが役立つことがわかったので、次の調整をお勧めします。
- 生成されるドロップを次のようにデータベースに制限します:
SELECT concat('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';
注1:これはDROPステートメントを実行せず、それらのリストを提供するだけです。 出力を実行するには、出力を切り取ってSQLエンジンに貼り付ける必要があります。
注2:ビューがある場合は、各DROP TABLE `VIEW_NAME`
を修正する必要があります DROP VIEW `VIEW_NAME`
へのステートメント 手動で。
- 注: http://dev.mysql .com / doc / refman / 5.5 / en / drop-table.html 、カスケードでドロップすることは無意味/誤解を招く可能性があります:
したがって、必要に応じてdropステートメントを機能させるには、次のようにします。
SET FOREIGN_KEY_CHECKS = 0
これにより、参照整合性チェックが無効になります。したがって、必要なドロップの実行が完了したら、でキーチェックをリセットする必要があります
SET FOREIGN_KEY_CHECKS = 1
- 最終的な実行は次のようになります。
SET FOREIGN_KEY_CHECKS = 0;
-- Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;
注意:SELECTの出力をより簡単に使用するには、mysql-Bオプションが役立ちます。