У меня есть резервная копия script для моей базы данных MySQL, используя mysqldump
с опцией --tab
, поэтому она создает файл .sql
для структуры и файл .txt
(разделенный на трубы) для содержимого.
В некоторых таблицах есть внешние ключи, поэтому при импорте я получаю сообщение об ошибке:
ОШИБКА 1217 (23000) в строке 8: Не удается удалить или обновить родительскую строку: ограничение внешнего ключа завершено
Я знаю об использовании SET FOREIGN_KEY_CHECKS=0
(и SET FOREIGN_KEY_CHECKS=1
после этого). Если я добавлю их в каждый .sql
файл, то импорт будет работать. Но тогда, очевидно, на следующем mysqldump
они будут перезаписаны.
Я также попытался запустить его как отдельную команду, как показано ниже, но ошибка возвращается:
echo "SET FOREIGN_KEY_CHECKS=0" | mysql [user/pass/database]
[all the imports]
echo "SET FOREIGN_KEY_CHECKS=1" | mysql [user/pass/database]
Есть ли другой способ отключить проверки FK в командной строке?