由于不应存在的FK约束,MySQL失败

时间:2017-09-26 15:05:50

标签: mysql

我正在运行以下非常无聊的查询:

alter table mytable change user_id user_id varchar(36) null default null,
add foreign key (user_id) references users(id) on delete set null;

但它失败并出现以下错误:

#1452 - Cannot add or update a child row: a foreign key constraint fails
(`mydatabase`.`#sql-602_60f`, CONSTRAINT `#sql-602_60f_ibfk_4`
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL

问题是外键约束不存在,所以我无法删除它。表中有3个外键重量符(mytable_ibfk_1,mytable_ibfk_2,mytable_ibfk_3),但没有提到名称,并且尝试删除它会产生另一个错误。

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

正如Michael Berkowski指出的那样,我误读了错误,错误指向了两列中的冲突值,而不是我无法删除的现有幻像约束。

问题的根源在于该列先前已接受空字符串值(''),并且需要将这些值转换为NULL以便将外键约束放在适当的位置。