sql >> Database >  >> RDS >> Mysql

Kun je automatisch een mysqldump-bestand maken dat geen beperkingen oplegt aan externe sleutels?

De mysqldump commando meegeleverd met MySQL sinds versie 4.1.1 produceert standaard een script dat de externe sleutelcontroles uitschakelt. De volgende regel staat bovenaan het dumpbestand:

/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

De /*!40014 ... */ syntaxis is een voorwaardelijke reactie die wordt uitgevoerd op MySQL versie 4.0.14 en later. De oude instelling voor het controleren van buitenlandse sleutels wordt hersteld tegen het einde van het dumpbestand:

/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;

Merk op dat de voorwaardelijke opmerkingen worden geïnterpreteerd door de client (in plaats van de server). Als u het dumpbestand laadt met een client die ze niet ondersteunt, worden de externe sleutelcontroles niet uitgeschakeld en kunt u fouten tegenkomen. Voor de beste resultaten raad ik aan om dumpbestanden te laden met de officiële mysql-opdrachtregelclient:

mysql -hserver -uuser -p database < dumpfile.sql

Het is ook vermeldenswaard dat als mysqldump wordt uitgevoerd met de --compact optie, dan worden de opdrachten voor het in- en uitschakelen van de externe sleutelcontroles weggelaten uit het dumpbestand.



  1. Hoe kan ik MySQL-laadfout corrigeren?

  2. Waarom het afstemmen van SQL-prestaties de belangrijkste vaardigheid voor databasebeheer is

  3. Escape een tekenreeks in SQL Server zodat het veilig is om te gebruiken in LIKE-expressie

  4. Een tabel maken van het geselecteerde queryresultaat in SQL Server 2008