|
Порядок создания таблиц с внешними ключами в mysqldump.
|
|||
---|---|---|---|
#18+
Приветствую коллег! Вот такая проблема обнаружилась. При восстановлении БД из дампа получаем ошибку: Код: plaintext
Просмотр файла дампа показал, что действительно таблица с внешним ключом создаётся раньше чем таблица, на которую она ссылается. Вопрос в следующем: почему утилита mysqldump не следит за тем чтобы таблицы создавались в правильном порядке? Или, может, ей для этого необходимо указать какие то опции? p.s. Версия сервера: MariaDB 10.0. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 15:52 |
|
Порядок создания таблиц с внешними ключами в mysqldump.
|
|||
---|---|---|---|
#18+
Лебедкинпочему утилита mysqldump не следит за тем чтобы таблицы создавались в правильном порядке?Потому что восстановление ВСЕГДА проводится при отключении подсистемы контроля целостности. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 16:38 |
|
Порядок создания таблиц с внешними ключами в mysqldump.
|
|||
---|---|---|---|
#18+
ааа!! перед восстановлением надо так прописать: Код: plaintext
Тогда странно, почему этот оператор в дамп-файл не записывается по умолчанию? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 16:49 |
|
Порядок создания таблиц с внешними ключами в mysqldump.
|
|||
---|---|---|---|
#18+
Не получилось! перед восстановлением сделал так: Код: plaintext
ошибка сохранилась. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 16:57 |
|
Порядок создания таблиц с внешними ключами в mysqldump.
|
|||
---|---|---|---|
#18+
Лебедкин Код: plaintext
Мне не с руки проверять, но нет, мне не кажется что ваш вывод по такой ошибке справедлив. Скорее парсеру не нравится само выражение. Дамп снимался с базы этой же версии? Покажите строку из дампа на которой падает. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 17:43 |
|
Порядок создания таблиц с внешними ключами в mysqldump.
|
|||
---|---|---|---|
#18+
Melkij, Падает здесь: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Сама таблица dinner_loyalty_gift определена на несколько десятков строк ниже: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 18:29 |
|
Порядок создания таблиц с внешними ключами в mysqldump.
|
|||
---|---|---|---|
#18+
ЛебедкинСама таблица dinner_loyalty_gift определена на несколько десятков строк ниже:В этом случае ошибка легитимна - нельзя создать FK на то, чего нет. Порядок создания таблиц, увы, нужно корректировать вручную (в общем случае построение корректного порядка создания таблиц невозможно, ибо ничто не запрещает циклических зависимостей). Поэтому обычная практика - отдельно бэкап структуры (--no-data), который потом рихтуется руками, отдельно данные (--no-create-info). Ещё лучше - сначала создание таблиц, потом создание ключей. Но это ещё более вдумчивая ручная рихтовка дампа структуры. Впрочем, делается-то это один раз, в отличие от бэкапа данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 07:42 |
|
Порядок создания таблиц с внешними ключами в mysqldump.
|
|||
---|---|---|---|
#18+
AkinaВ этом случае ошибка легитимна - нельзя создать FK на то, чего нет.Насколько я помню, set foreign_key_checks=0; должно помочь и в этом случае. Бывают же и кольцевые зависимости, которые порядком создания таблиц не исправишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 07:47 |
|
Порядок создания таблиц с внешними ключами в mysqldump.
|
|||
---|---|---|---|
#18+
ЛебедкинНе получилось! перед восстановлением сделал так: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 07:48 |
|
Порядок создания таблиц с внешними ключами в mysqldump.
|
|||
---|---|---|---|
#18+
AkinaЕщё лучше - сначала создание таблиц, потом создание ключей. Но это ещё более вдумчивая ручная рихтовка дампа структуры. Впрочем, делается-то это один раз, в отличие от бэкапа данных. Но при малейшем изменении структуры данных, придется делать всё по новой (( ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 08:13 |
|
Порядок создания таблиц с внешними ключами в mysqldump.
|
|||
---|---|---|---|
#18+
miksoftЛебедкинНе получилось! перед восстановлением сделал так: Код: plaintext
В начало дамп-файла эту строчку добавил. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 08:15 |
|
Порядок создания таблиц с внешними ключами в mysqldump.
|
|||
---|---|---|---|
#18+
Лебедкинпри малейшем изменении структуры данных, придется делать всё по новойА никто не обещал, что будет легко... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 09:36 |
|
|
start [/forum/topic.php?fid=47&fpage=39&tid=1829277]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 148ms |
0 / 0 |