TemKa_SD

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

6 сообщений в этой теме

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попробуйте 

SET GLOBAL foreign_key_checks = 0

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

TemKa_SD понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попробуйте 

SET GLOBAL foreign_key_checks = 0

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

 

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

styoplotr понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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`

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу