Тема: Ошибка 1217 при импорте базы данных сайта

Здравствуйте!

При переносе сайта на новое место обитания возникла проблема при импортировании базы в phpMyAdmin.

На старом месте через phpMyAdmin был сделан дамп баз данных сайта.
На новом месте ввиду большого объёма одной из баз (32 МБ) была развёрнута своя  phpMyAdmin `ка и через ФТП залита эта самая база.
Однако, при импортировании в  phpMyAdmin  возникает такая ошибка:

Ошибка

SQL-запрос:

--
-- Дамп данных таблицы `cms3_cluster_nodes_cache_keys`
--
-- --------------------------------------------------------
--
-- Структура таблицы `cms3_domains`
--
DROP TABLE IF EXISTS `cms3_domains` ;

Ответ MySQL:
#1217 - Cannot delete or update a parent row: a foreign key constraint fails


Подскажите, в чём может быть проблема, и как её решить?
Спасибо!

2

Re: Ошибка 1217 при импорте базы данных сайта

Что-то с внешними ключами. Не разрешает удалять таблицу. Попробуйте очистить базу данных и импортировать в чистую. Если не поможет, то покажите запрос структуры таблицы. Дамп можно открыть в текстовом редакторе, вроде Notepad++. Простое решение - это удалить из дампа запрос на создание внешних ключей.

3

Re: Ошибка 1217 при импорте базы данных сайта

Пробовал чистить базу. Не помогает.  При импорте в чистую базу выдавал ошибку:

SQL-запрос:

--
-- Ограничения внешнего ключа таблицы `cms3_object_content`
--
ALTER TABLE `cms3_object_content` ADD CONSTRAINT `FK_Content to object relation` FOREIGN KEY ( `obj_id` ) REFERENCES `cms3_objects` ( `id` ) ON DELETE CASCADE ON UPDATE CASCADE ,
ADD CONSTRAINT `FK_content2tree` FOREIGN KEY ( `tree_val` ) REFERENCES `cms3_hierarchy` ( `id` ) ON DELETE CASCADE ON UPDATE CASCADE ,
ADD CONSTRAINT `FK_Contents field id relation` FOREIGN KEY ( `field_id` ) REFERENCES `cms3_object_fields` ( `id` ) ON DELETE CASCADE ON UPDATE CASCADE ,
ADD CONSTRAINT `FK_Relation value reference` FOREIGN KEY ( `rel_val` ) REFERENCES `cms3_objects` ( `id` ) ON DELETE CASCADE ON UPDATE CASCADE ;


Ответ MySQL: 
#1452 - Cannot add or update a child row: a foreign key constraint fails (`cl73742_Rosprir_umi`.<result 2 when explaining filename '#sql-3a7_d2067'>, CONSTRAINT `FK_Contents field id relation` FOREIGN KEY (`field_id`) REFERENCES `cms3_object_fields` (`id`) ON DELETE)
__________________________________________________________________________________

После этой ошибки я поверх уже залитого снова импортировал базу. И тогда он мне стал выдавать ошибку, о которой я писал в первом посте.

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

Теперь вопросы:
   - что такое запрос структуры таблицы, и как его вам показать?
   - как определить запрос на создание внешних ключей, и не повлияет ли удаление этих запросов на работу сайта (если он вообще заработает  smile  )?

База достаточно большая - в несжатом состоянии 32 метра, в ZIP`е   5 с копейками.

4

Re: Ошибка 1217 при импорте базы данных сайта

Пробовал импортировать через Дампер, он отображает ход импорта базы потаблично, выдал такую тему:

2012.11.09 06:22:06    Начало импорта БД `cl73742_Rosprir_umi`
    Файл: Rosprir_umi.sql
    Установлена кодировка соединения: `utf8`
    Импорт таблицы `accounts`
    Импорт таблицы `city_list`
    Импорт таблицы `cms3_cluster_nodes`
    Импорт таблицы `cms3_cluster_nodes_cache_keys`
    MySQL Error: Cannot delete or update a parent row: a foreign key constraint fails (/var/www/cl73742/data/www/rpn-kam.ru/sxd/index.php:1581)
2012.11.09 06:22:08    Выполнение прервано из-за ошибки
____________________________________________________________________________________

Я так понял, загрузка таблиц идёт в порядке их расположения в дампе. Может быть весь прикол в том, что одни таблицы грузятся раньше других, а должно быть наоборот, и из-за этого возникает ошибка?

5

Re: Ошибка 1217 при импорте базы данных сайта

Разархивируйте дамп, в Notepad++ откройте его и найдите строки вида (их может быть несколько, ищите по ADD CONSTRAINT):

ALTER TABLE `cms3_object_content` ADD CONSTRAINT...

Удалите их и сохраните дамп с новым именем. Попробуйте его импортировать. На работу сайта это никак не повлияет.

Устанавливать надо в чистую БД, в которой нет таблиц.

6

Re: Ошибка 1217 при импорте базы данных сайта

Спасибо огромное!
Всё заработало.