#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 и создайте скрипт для выполнения «тупым» конечным пользователем.