Гол. 0
Прос. 393

Пытаюсь заполнить столбец s_phone_mobile из oc_t_user таблицы для oc_t_item таблицы в базе данных MySQL. Я использую следующий запрос:

INSERT INTO oc_t_item (s_phone_mobile) 
SELECT s_phone_mobile
FROM   oc_t_user;

Но я получаю следующую ошибку:

#1452 - Cannot add or update a child row: a foreign key constraint fails (poljo_test.oc_t_item, CONSTRAINT oc_t_item_ibfk_2 FOREIGN KEY (fk_i_category_id) REFERENCES oc_t_category (pk_i_id)) 

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

(210 баллов) в категории База данных
категория изменена | Прос. 393

1 ответ

Гол. 0

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

Ограничение внешнего ключа в MySQL гарантирует, что ваша вставка относится к внешним ключам, которые либо существуют, либо, возможно, разрешают NULL если вы определили, что ключи являются нулевыми. Я предполагаю, что хотя бы один из следующих ключей не имеет значения NULL:

fk_i_user_id
fk_i_category_id
fk_c_currency_code

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

(1.9k баллов)
Добро пожаловать на сайт Osthemes Вопрос-ответ, где вы можете задавать вопросы и получать ответы от других пользователей сообщества.
21 вопросов
ответов: 21
комментариев: 3
13 пользователей