Задать вопрос
@lagudal

Ошибки при импорте дампа бд mysql — как исправить?

Переношу базу с одного сервера на другой, база довольно большая, в самом конце начинаются ошибки.
Подозреваю, что проблему могут быть из-за того, что на исходном сервере, с которого экпортирован дамп, стоит mysql8, а на сервере куда импортирую - mariadb. Если копирую базу на том же сервере, ошибок нет.
Экспортирую просто mysql - u user -p dbname < dump.sql
Первая ошибка:
ERROR 1062 (23000) at line 9002953: Duplicate entry 'default-0-amasty_elastic/catalog/query_settings' for key 'CORE_CONFIG_DATA_SCOPE_SCOPE_ID_PATH'

На лиии 9002953
(ALTER TABLE `core_config_data`
  ADD PRIMARY KEY (`config_id`),
  ADD UNIQUE KEY `CORE_CONFIG_DATA_SCOPE_SCOPE_ID_PATH` (`scope`,`scope_id`,`path`);

Действительно, есть 2 вхождения содержащие amasty_elastic,
на линии 2640090
(2449, 'default', 0, 'amasty_elastic/catalog/query_settings', '{\"name\":{\"wildcard\":\"1\",\"combining\":\"1\",\"spelling\":\"0\"},\"sku\":{\"wildcard\":\"1\",\"combining\":\"1\",\"spelling\":\"0\"},\"qapplication\":{\"wildcard\":\"1\",\"combining\":\"1\",\"spelling\":\"0\"},\"qmatname\":{\"spelling\":\"1\",\"combining\":\"1\",\"wildcard\":\"0\"},\"gtin\":{\"wildcard\":\"1\",\"combining\":\"1\",\"spelling\":\"0\"},\"qaddinfo\":{\"spelling\":\"1\",\"combining\":\"1\",\"wildcard\":\"0\"},\"qfeatures\":{\"spelling\":\"1\",\"combining\":\"1\",\"wildcard\":\"0\"},\"qcolor\":{\"wildcard\":\"1\",\"combining\":\"1\",\"spelling\":\"0\"},\"qimprint\":{\"wildcard\":\"1\",\"combining\":\"1\",\"spelling\":\"0\"},\"qmanufacturername\":{\"spelling\":\"1\",\"combining\":\"1\",\"wildcard\":\"0\"},\"qmodell\":{\"wildcard\":\"1\",\"combining\":\"1\",\"spelling\":\"0\"},\"qoverlay_image\":{\"wildcard\":\"1\",\"combining\":\"1\",\"spelling\":\"0\"},\"qprodname\":{\"wildcard\":\"1\",\"combining\":\"1\",\"spelling\":\"0\"},\"zshortname\":{\"wildcard\":\"1\",\"combining\":\"1\",\"spelling\":\"0\"},\"qgroupcolor\":{\"wildcard\":\"1\",\"combining\":\"1\",\"spelling\":\"0\"},\"qprinterseries\":{\"wildcard\":\"1\",\"combining\":\"1\",\"spelling\":\"0\"},\"qrawmaterial\":{\"spelling\":\"1\",\"combining\":\"1\",\"wildcard\":\"0\"},\"zprevious_skus\":{\"wildcard\":\"1\",\"combining\":\"1\",\"spelling\":\"0\"},\"qforcompatibility\":{\"wildcard\":\"1\",\"combining\":\"1\",\"spelling\":\"0\"},\"url_key\":{\"combining\":\"0\",\"spelling\":\"0\",\"wildcard\":\"0\"}}'),

и на линии 2640522
(3083, 'default', 0, 'amasty_elastic/catalog/query_settings', '{\n  \"sku\": {\n    \"wildcard\": \"0\",\n    \"spelling\": \"0\",\n    \"combining\": \"0\"\n  },\n  \"name\": {\n    \"wildcard\": \"1\",\n    \"spelling\": \"0\",\n    \"combining\": \"0\"\n  },\n  \"short_description\": {\n    \"wildcard\": \"0\",\n    \"spelling\": \"1\",\n    \"combining\": \"1\"\n  },\n  \"description\": {\n    \"wildcard\": \"0\",\n    \"spelling\": \"1\",\n    \"combining\": \"1\"\n  }\n}\n'),

Удалил в дампе последнюю запись, ради эксперимента, теперь импорт проходит немного дальше - валится с ошибкой на линии 9009068
ERROR 1452 (23000) at line 9009068: Cannot add or update a child row: a foreign key constraint fails (`labelident2`.`#sql-2fff_3c`, CONSTRAINT `CUSTOMER_EAV_ATTRIBUTE_ATTRIBUTE_ID_EAV_ATTRIBUTE_ATTRIBUTE_ID` FOREIGN KEY (`attribute_id`) REFERENCES `eav_attribute` (`attribute_id`) ON DELETE CAS)

сама линия 9009068 содержит
ALTER TABLE `customer_eav_attribute`
  ADD CONSTRAINT `CUSTOMER_EAV_ATTRIBUTE_ATTRIBUTE_ID_EAV_ATTRIBUTE_ATTRIBUTE_ID` FOREIGN KEY (`attribute_id`) REFERENCES `eav_attribute` (`attribute_id`) ON DELETE CASCADE;


Как избавиться от этих ошибок и чисто импортнуть дамп?
  • Вопрос задан
  • 136 просмотров
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
У вас уникальный ключ, который в старой базе был уникален, вдруг оказывается повторяющимся в новой?
Такого не должно быть, если таблицы одинаковые.
Сравнивайте - либо у полей таблицы разное сравнение (в частности, суффикс ci - case independent), либо у новой короче длина поля и оно обрезается, теряя информацию.
Обходить такие ошибки не стоит: они как канарейки - первыми показывают, что у вас что-то не так.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы