it-roy-ru.com

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

Я получаю эту ошибку: 

1452 - Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа выходит из строя.

Я нашел их и пытаюсь избавиться от ссылок с

alter table tillhör drop foreign key kat_id;

Но вместо этого получаем эту ошибку:

# 1025 - Ошибка при переименовании '. \Cept\tillh @ 1ir' в '.\rece # sql2-1570-3cb' (номер ошибки: 152).

Что я делаю не так?

16
Mia Raunegger

Прежде чем выполнить запрос

SET FOREIGN_KEY_CHECKS=0

затем установите его на 1 после того, как вы закончите.

37
Mihai

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

Это происходит, если дочерняя таблица содержит данные с внешним ключом, которых нет в родительской таблице, т. Е. Если есть две таблицы с именами Person (с идентификатором столбца, именем, адресом) и order (с идентификатор столбца, person_id, order_name); order.person_id является внешним ключом person.id, а таблица заказов содержит person_id, которого нет в таблице person

Вы можете решить это, используя следующий запрос

Delete from order where person_id NOT IN (select id from person where person.id = order.person_id)
13
Jakir Hosen Khan

Когда у меня возникла эта проблема, это было связано с тем, что я забыл указать разрешенные NULLS при создании полей идентификатора внешнего ключа. Я изменил это после факта, но 0 уже были в значении. Не удалось найти 0 в соответствующей таблице, а затем выдал эту ошибку. Исправление: обновите нулевые значения до нуля.

6
Cymbals

Вы должны установить значения NULL для родительских и дочерних таблиц .__ или установить те же значения, например Сначала дочерняя таблица nam = Derick Имя родительской таблицы = Derick

0
derick