Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL DROP tutte le tabelle, ignorando le chiavi esterne

Ho trovato utile il set di istruzioni di rilascio generato e consiglio queste modifiche:

  1. Limita le gocce generate al tuo database in questo modo:
SELECT concat('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';

Nota 1:questo non esegue le istruzioni DROP, ti fornisce solo un elenco di esse. Dovrai tagliare e incollare l'output nel tuo motore SQL per eseguirli.

Nota 2:se hai VIEW, dovrai correggere ogni DROP TABLE `VIEW_NAME` istruzione a DROP VIEW `VIEW_NAME` manualmente.

  1. Nota, per http://dev.mysql .com/doc/refman/5.5/en/drop-table.html , cadere a cascata è inutile / fuorviante:

Pertanto, affinché le istruzioni drop funzionino se hai bisogno di:

SET FOREIGN_KEY_CHECKS = 0

Ciò disabiliterà i controlli di integrità referenziale, quindi quando avrai finito di eseguire i drop di cui hai bisogno, vorrai reimpostare il controllo della chiave con

SET FOREIGN_KEY_CHECKS = 1
  1. L'esecuzione finale dovrebbe essere simile a:
SET FOREIGN_KEY_CHECKS = 0;
-- Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;

NB:per utilizzare l'output di SELECT più facilmente, l'opzione mysql -B può aiutare.