Скопируйте содержимое столбца из одной таблицы в другую mysql

Я пытаюсь заполнить колонку 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`)) 

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

1 ответ

Решение

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

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

fk_i_user_id
fk_i_category_id
fk_c_currency_code

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

Другие вопросы по тегам