Команда mysqldump
, включенная в MySQL начиная с версии 4.1.1 , по умолчанию создает сценарий, который отключает проверку внешнего ключа. Следующая строка находится в верхней части файла дампа:
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
Синтаксис /*!40014 ... */
- это условный комментарий , который будет выполняться в MySQL версии 4.0.14 и более поздних. Старый параметр проверки внешнего ключа восстанавливается в конце файла дампа:
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
Обратите внимание, что условные комментарии интерпретируются клиентом (а не сервером). Если вы загрузите файл дампа с клиентом, который их не поддерживает, проверка внешнего ключа не будет отключена, и вы можете столкнуться с ошибками. Для достижения наилучших результатов я бы рекомендовал загружать файлы дампа с помощью официального клиента командной строки mysql:
mysql -hserver -uuser -p database < dumpfile.sql
Стоит также отметить, что если mysqldump
запускается с опцией --compact
, то команды для отключения и повторного включения проверок внешнего ключа в файле дампа не указываются.