Tôi nhận thấy tập hợp các câu lệnh drop được tạo hữu ích và đề xuất các chỉnh sửa này:
- Hạn chế các giọt đã tạo vào cơ sở dữ liệu của bạn như thế này:
SELECT concat('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';
Lưu ý 1:Điều này không thực thi các câu lệnh DROP, nó chỉ cung cấp cho bạn danh sách các câu lệnh đó. Bạn sẽ cần phải cắt và dán đầu ra vào công cụ SQL của mình để thực thi chúng.
Lưu ý 2:Nếu bạn có CHẾ ĐỘ XEM, bạn sẽ phải sửa từng DROP TABLE `VIEW_NAME`
tuyên bố với DROP VIEW `VIEW_NAME`
thủ công.
- Lưu ý, theo http://dev.mysql .com / doc / refman / 5.5 / vi / drop-table.html , giảm theo tầng là vô nghĩa / gây hiểu lầm:
Do đó, để các câu lệnh drop hoạt động, bạn cần:
SET FOREIGN_KEY_CHECKS = 0
Điều này sẽ vô hiệu hóa kiểm tra tính toàn vẹn tham chiếu - vì vậy khi bạn thực hiện xong các lần giảm bạn cần, bạn sẽ muốn đặt lại kiểm tra khóa với
SET FOREIGN_KEY_CHECKS = 1
- Quá trình thực thi cuối cùng sẽ giống như sau:
SET FOREIGN_KEY_CHECKS = 0;
-- Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;
NB:để sử dụng đầu ra của SELECT dễ dàng hơn, tùy chọn mysql -B có thể giúp ích.