Jump to content

MYSQL #1217 - Cannot delete or update a parent row: a foreign key constraint fails


Recommended Posts

Здравствуйте, вот такая ошибка при удалении таблицы:

#1217 - Cannot delete or update a parent row: a foreign key constraint fails

Вот решение http://coder.v-tanke.ru/viewtopic.php?t=1326но что-то у меня всё равно не удаляет. Что делать?

Link to post
Share on other sites

Есть вопрос? Задай его профессиональным веб-мастерам, SEO и другим специалистам!

  • VIP

Попробуйте 

SET GLOBAL foreign_key_checks = 0

У проверки внешних ключей есть 2 значения: глобальное и per session то есть присваивается к сессии, вы отключаете тот что per session, может из за этого.

Link to post
Share on other sites

Уж если отключаете проверку ключей, то зачем тогда вообще ключи делать? :) 

Вероятно ключи нужны для обеспечения целостности данных. Ну тогда делайте так:

1. если удаляете данные из таблицы, то удаляйте их и из связанных таблиц соответственно.

2. если делаете изменение значения поля, то в связанной по этому полю таблице должно быть новое значение, иначе будет возникать ошибка.

 

А если удаляете таблицу, то удалите предварительно связи с другими таблицами. :)

Link to post
Share on other sites

Попробуйте 

SET GLOBAL foreign_key_checks = 0

У проверки внешних ключей есть 2 значения: глобальное и per session то есть присваивается к сессии, вы отключаете тот что per session, может из за этого.

 

Спасибо, помогло.

Link to post
Share on other sites

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

SQL Error [REPLACE INTO `префикс_user_info` (`server_id`, `user_id`, `key`, `value`) VALUES (?, ?, ?, ?)]: Cannot add or update a child row: a foreign key constraint fails (`база`.`префикс_user_info`, CONSTRAINT `префикс_user_info_del_user` FOREIGN KEY (`server_id`, `user_id`) REFERENCES `префикс_users` (`server_id`, `user_id`) ON DELETE CASCADE) QMYSQL3: Unable to execute statement

При этом, такой вообще нет в структуре:

`префикс_user_info_del_user`

Я так понимаю, что-то со сравнением в ключах, не знаю что делать дальше )

Link to post
Share on other sites

Похоже, это потому что таблица user_info в innodb, а users в myisam. Пытаюсь изменить  в таблице users, ошибка :( ....

ALTER TABLE `префикс_users`
ENGINE = InnoDB;
Ответ MySQL: Документация

#1025 - Error on rename of './таблица/#sql-566c_1bc4' to './таблица/префикс_users' (errno: 150) 
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...