Saya menemukan kumpulan pernyataan drop yang dihasilkan berguna, dan merekomendasikan penyesuaian ini:
- Batasi drop yang dihasilkan ke database Anda seperti ini:
SELECT concat('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';
Catatan 1:Ini tidak menjalankan pernyataan DROP, itu hanya memberi Anda daftarnya. Anda perlu memotong dan menempelkan output ke mesin SQL Anda untuk menjalankannya.
Catatan 2:Jika Anda memiliki VIEWs, Anda harus mengoreksi setiap DROP TABLE `VIEW_NAME`
pernyataan ke DROP VIEW `VIEW_NAME`
secara manual.
- Catatan, per http://dev.mysql .com/doc/refman/5.5/en/drop-table.html , jatuh dengan kaskade tidak ada gunanya / menyesatkan:
Oleh karena itu, agar pernyataan drop berfungsi jika Anda membutuhkan:
SET FOREIGN_KEY_CHECKS = 0
Ini akan menonaktifkan pemeriksaan integritas referensial - jadi ketika Anda selesai melakukan drop yang Anda butuhkan, Anda akan ingin mengatur ulang pemeriksaan kunci dengan
SET FOREIGN_KEY_CHECKS = 1
- Eksekusi akhir akan terlihat seperti:
SET FOREIGN_KEY_CHECKS = 0;
-- Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;
NB:untuk menggunakan output SELECT lebih mudah, opsi mysql -B dapat membantu.