-1

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

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

    #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)
4

2 回答 2

2

似乎您的表中已经有一些数据,这会阻止您添加约束。可能是您在表中有一些行引用了不存在的外键。确保表格数据可供参考。

于 2013-06-08T09:22:02.557 回答
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 外键错误 #1452

Mysql 错误 1452 - 无法添加或更新子行:外键约束失败

于 2013-06-08T15:35:04.430 回答