sql >> Database >  >> RDS >> Mysql

Kan tabel niet laten vallen:een beperking van een externe sleutel mislukt

Dit zou moeten werken:

SET FOREIGN_KEY_CHECKS=0; DROP TABLE bericht; SET FOREIGN_KEY_CHECKS=1;

Zoals anderen al aangeven, is dit bijna nooit wat je wilt, ook al wordt het gevraagd in de vraag. Een veiligere oplossing is om de tabellen te verwijderen afhankelijk van bericht voor het verwijderen van bericht . Zie CloudyMarble-antwoord over hoe dat te doen. Ik gebruik bash en de methode in mijn bericht om alle tabellen in een database te laten vallen wanneer ik de database zelf niet wil of kan verwijderen en opnieuw kan maken.

De #1217 er treedt een fout op wanneer andere tabellen externe sleutelbeperkingen hebben voor de tabel die u probeert te verwijderen en u de InnoDB-database-engine gebruikt. Met deze oplossing wordt het controleren van de beperkingen tijdelijk uitgeschakeld en vervolgens weer ingeschakeld. Lees de documentatie voor meer. Zorg ervoor dat u beperkingen en velden voor buitenlandse sleutels in tabellen verwijdert, afhankelijk van het bericht , anders zou u uw database in een kapotte staat kunnen achterlaten.



  1. Docker mysql kan geen verbinding maken met container

  2. Aanbevelingen voor prestatieafstemming van MySQL my.cnf

  3. Bewerking niet toegestaan ​​nadat ResultSet is gesloten (mysql, java)

  4. SQLite-tabel maken