mysql экспортирует дамп sql в алфавитном порядке, что приводит к ошибке ограничений внешнего ключа при импорте

#mysql #foreign-key-relationship #dump

#mysql #foreign-key-relationship #дамп

Вопрос:

В моей базе данных (MySQL) есть 10 таблиц. два из них приведены ниже

tbl_state

 state_id    |int(10)  |UNSIGNED ZEROFILL  auto_increment 
state_name  |varchar(40) 
  

tbl_city

 city_id     |int(10)  |UNSIGNED ZEROFILL  auto_increment 
city_name   |varchar(40) |
state_code  |int(10)  | UNSIGNED ZEROFILL (FK reference with tbl_state.state_id)
  

ограничение внешнего ключа tbl_city.state_code : это ссылки на tbl_state.state_id .

теперь моя проблема заключается в

когда я экспортирую все таблицы и импортирую снова, это выдает

foreign key constraint fails error.... потому что, когда я экспортирую дамп mysql, дамп sql генерируется в таблицах в алфавитном порядке, а tbl_city стоит перед tbl_state в базе данных.

Пожалуйста, подскажите мне, как мне справиться с этим сценарием?

Есть ли какой-либо способ, чтобы все таблицы приводились в порядке ссылок на внешний ключ?

Ответ №1:

Вы хотите отключить проверки внешнего ключа в начале дампа, а затем включить их после сброса всех данных:

 SET FOREIGN_KEY_CHECKS=0

... dump ...

SET FOREIGN_KEY_CHECKS=1
  

Комментарии:

1. я не могу этого сделать, потому что я переношу данные с компьютера и импортирую на другой компьютер, и это будет сделано нетехническим специалистом. и этот процесс будет б продолжаться один раз в день вечно… предложите мне какую-нибудь другую идею

2. технический специалист, который отвечает за создание дампа, должен затем исправить свой скрипт. или используйте mysqldump, который делает это за вас

3. можете ли вы подсказать мне ссылку, по которой я могу найти какой-нибудь скрипт, который экспортирует mysql в xml с одного компьютера и импортирует xml в mysql на другой компьютер

4. Вы можете использовать mysqldump с флагом —xml: dev.mysql.com/doc/refman/5.1/en/mysqldump.html

5. прослушайте reko_t и создайте скрипт для выполнения «тупым» конечным пользователем.

Ответ №2:

Случайно, если вы используете SQLyog. Используйте это свойство.введите описание изображения здесь