将外键添加到现有列时出错

时间:2013-06-08 09:18:45

标签: mysql compiler-errors

我有一个表,其中我有一个主键和另一列,它是同一数据库中另一个表的主键。

我只想添加foregin键但显示错误 -

    #1452 - Cannot add or update a child row: a foreign key constraint fails
    (`c2cjobportal`.`#sql-114c_e3`,CONSTRAINT `fk_PerOrders
`FOREIGN KEY (`jobseekers_id`) REFERENCES `jobseekers` (`jobseekers_id`))

是什么原因引起的?

我的sql代码是 -

ALTER TABLE `jobseekers_customprofile`
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (jobseekers_Id)
REFERENCES jobseekers(jobseekers_Id)

2 个答案:

答案 0 :(得分:2)

表中似乎已经有了一些数据,这样可以避免添加约束。可能是表格中有一些行指的是不存在的外键。确保表数据可以被引用。

答案 1 :(得分:2)

我认为你盲目地追随这些事情。 我不相信,但完全知道从w3cschool复制代码并尝试使用代码,因为它看起来很相似 http://www.w3schools.com/sql/sql_foreignkey.asp

您使用的代码是

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)

但是你还没有看到上面写的内容“要允许命名FOREIGN KEY约束,并且为了在多列上定义FOREIGN KEY约束,请使用以下SQL语法:”首先阅读然后按照事情,永远不要匆忙。 因为你的阅读被复制并粘贴没有尝试过其他资源并在这里发布了问题你得到-1(当然不是来自我,也不能给予我无法访问)。

来实际的事情 -

你发布sql代码的senario应该是这样的 -

ALTER TABLE `jobseekers_customprofile`
ADD CONSTRAINT FOREIGN KEY (jobseekers_Id)
REFERENCES jobseekers(jobseekers_Id)

条件是,如果数据已经存在,则可能无法解决问题,因此请在执行此查询之前检查数据。你也可以使用ON UPDATE CASCADE和DELETE ON CASCADE on DELETE CASCADE on DELETE DEFAULT

尝试参考这些

http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html

mysql foreign key error #1452

Mysql error 1452 - Cannot add or update a child row: a foreign key constraint fails