繁体   English   中英

MySQL将外键添加到现有表PHP

[英]MySQL Add foreign key to existing table PHP

我有一个内置数据库,其中所有表都使用INNODBForeign Keys设置 现在,我需要修改一个表并添加一个引用另一个表的新列。 我的查询是:

ALTER TABLE test ADD newcol INT NOT NULL;

ALTER TABLE test ADD CONSTRAINT fk_test
FOREIGN KEY (newcol) 
REFERENCES othertable(id);

我收到以下错误:

"#1452 - Cannot add or update a child row: a foreign key constraint fails."

所有其他表都包含数据,但是我知道,如果删除test表并使用外键创建它,它将起作用。 如果删除测试表,它将删除许多记录,并且我想避免复制数据并重新插入。

谁能告诉我如何通过外键添加新列?

该错误消息表示您在newcol中具有othertable id列中不存在的值。 通过添加INT NOT NULL列,可以将该列的所有初始值设置为0 如果您在othertable的ID不为0 ,则密钥不匹配

试试这个查询:

SELECT  newcol 
FROM    test
WHERE   newcol NOT IN (
    SELECT  id
    FROM    othertable
)

如果返回任何结果,则newcol中的newcol违反FK约束

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM