sql >> Database >  >> RDS >> Mysql

MySQL DROP alle tabellen en negeer externe sleutels

Ik vond de gegenereerde set drop-statements nuttig en raad deze tweaks aan:

  1. Beperk de gegenereerde drops als volgt tot uw database:
SELECT concat('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';

Opmerking 1:Dit voert de DROP-instructies niet uit, het geeft u alleen een lijst ervan. U moet de uitvoer knippen en plakken in uw SQL-engine om ze uit te voeren.

Opmerking 2:Als je VIEW's hebt, moet je elke DROP TABLE `VIEW_NAME` corrigeren statement naar DROP VIEW `VIEW_NAME` handmatig.

  1. Opmerking, per http://dev.mysql .com/doc/refman/5.5/en/drop-table.html , laten vallen met cascade is zinloos / misleidend:

Daarom, om ervoor te zorgen dat de drop-statements werken als je het volgende nodig hebt:

SET FOREIGN_KEY_CHECKS = 0

Hiermee worden referentiële integriteitscontroles uitgeschakeld - dus wanneer u klaar bent met het uitvoeren van de drops die u nodig heeft, kunt u de toetscontrole resetten met

SET FOREIGN_KEY_CHECKS = 1
  1. De uiteindelijke uitvoering zou er als volgt uit moeten zien:
SET FOREIGN_KEY_CHECKS = 0;
-- Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;

NB:om de uitvoer van SELECT gemakkelijker te gebruiken, kan de optie mysql -B helpen.



  1. Innerlijke join vs waar

  2. SQL-syntaxisfout - kan de fout niet vinden

  3. Hulp bij PHP- en SQL-hashing:wat doe ik verkeerd?

  4. Hoe Kubernetes te installeren met Kubeadm