У меня есть список таблиц в MySQL с ограничениями внешнего ключа. При экспорте все таблицы вместе с представлениями, функциями и процедурами экспортируются в алфавитном порядке.
Когда я импортирую экспортированный таким образом SQL, я застреваю с ошибкой «Таблица ограничений внешнего ключа не найдена», хотя структура требуемой таблицы приведена ниже в листинге. Я хочу экспортировать их по порядку, чтобы они поддерживали все ссылки в структуре.
Как это можно сделать с помощью MySQL?
Невозможно экспортировать таблицы в порядке, учитывающем «внешние ключи», если только вы не экспортируете таблицы по отдельности. Затем импортируйте таблицы из отдельного экспорта в нужном вам порядке. (Обратите внимание, что база данных может содержать циклические ссылки на внешние ключи, где нет порядка, в котором таблицы были бы в порядке «внешнего ключа».)
(Как ответ на несколько иной вопрос …)
Обходной путь для ошибки импорта должен запрещать применение внешних ключей в течение всего процесса импорта. Настройка foreign_key_checks
переменная в 0 отключает принудительное использование внешних ключей; чтобы снова включить, установите переменную в 1.
Например:
SET FOREIGN_KEY_CHECKS = 0;
-- import tables
create table ...
insert into ...
create table ...
insert into ...
SET FOREIGN_KEY_CHECKS = 1;
Других решений пока нет …