mysqldump
команда, включена в MySQL от версия 4.1.1
по подразбиране създава скрипт, който изключва проверките на външния ключ. Следният ред е включен в горната част на дъмп файла:
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40014 ... */
синтаксисът е условен коментар
който ще се изпълнява на MySQL версия 4.0.14 и по-нова. Старата настройка за проверка на външния ключ се възстановява към края на дъмп файла:
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;
Имайте предвид, че условните коментари се интерпретират от клиента (а не на сървъра). Ако заредите дъмп файла с клиент, който не ги поддържа, тогава проверките на външни ключове няма да бъдат деактивирани и може да срещнете грешки. За най-добри резултати предлагам да заредите дъмп файлове с помощта на официалния клиент на командния ред на mysql:
mysql -hserver -uuser -p database < dumpfile.sql
Също така си струва да се отбележи, че ако mysqldump
се изпълнява с --compact
опция, тогава командите за деактивиране и повторно активиране на проверките на външния ключ се пропускат от дъмп файла.