Jag tyckte att den genererade uppsättningen drop-satser var användbara och rekommenderar dessa justeringar:
- Begränsa de genererade dropparna till din databas så här:
SELECT concat('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';
Obs 1:Detta exekverar inte DROP-satserna, det ger dig bara en lista över dem. Du måste klippa ut och klistra in utdata i din SQL-motor för att köra dem.
Obs 2:Om du har VIEWS måste du korrigera varje DROP TABLE `VIEW_NAME`
uttalande till DROP VIEW `VIEW_NAME`
manuellt.
- Obs, enligt http://dev.mysql .com/doc/refman/5.5/en/drop-table.html , att släppa med kaskad är meningslöst / missvisande:
Därför, för att drop-satserna ska fungera om du behöver:
SET FOREIGN_KEY_CHECKS = 0
Detta kommer att inaktivera referensintegritetskontroller - så när du är klar med att utföra de droppar du behöver, vill du återställa nyckelkontroll med
SET FOREIGN_KEY_CHECKS = 1
- Den slutliga körningen ska se ut så här:
SET FOREIGN_KEY_CHECKS = 0;
-- Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;
OBS:för att använda utdata från SELECT enklare kan mysql -B-alternativet hjälpa.