sql >> Databáze >  >> RDS >> Mysql

Můžete automaticky vytvořit soubor mysqldump, který nevynucuje omezení cizího klíče?

mysqldump příkaz zahrnutý v MySQL od verze 4.1.1 ve výchozím nastavení vytvoří skript, který vypne kontroly cizích klíčů. V horní části souboru výpisu je uveden následující řádek:

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

Kód /*!40014 ... */ syntaxe je podmíněný komentář který bude spuštěn na MySQL verze 4.0.14 a novější. Ke konci souboru výpisu se obnoví staré nastavení kontroly cizího klíče:

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

Upozorňujeme, že podmíněné komentáře jsou interpretovány klientem (spíše než server). Pokud soubor výpisu načtete pomocí klienta, který je nepodporuje, kontroly cizích klíčů nebudou zakázány a můžete narazit na chyby. Pro dosažení nejlepších výsledků bych navrhoval načítání souborů výpisu pomocí oficiálního klienta příkazového řádku mysql:

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

Za zmínku také stojí, že pokud mysqldump je spuštěn pomocí --compact pak jsou příkazy pro zakázání a opětovné zapnutí kontrol cizích klíčů ze souboru výpisu vynechány.



  1. Jak Stuff a 'For Xml Path' fungují v SQL Server?

  2. Jak si přizpůsobit zálohy MySQL a MariaDB pomocí ClusterControl

  3. Zápis rekurzivního CTE pomocí syntaxe Entity Framework Fluent nebo Inline syntaxe

  4. MySQL - Jak analyzovat hodnotu řetězce na formát DATETIME uvnitř příkazu INSERT?