MySQL错误#1452 - 尝试添加外键

时间:2014-08-05 09:10:22

标签: mysql sql phpmyadmin

我要做的是为accountid创建一个外键到accountID,但是phpMyAdmin给了我以下错误..

#1452 - Cannot add or update a child row: a foreign key constraint fails (`db123`.`#sql-910_11a1`, CONSTRAINT `#sql-910_11a1_ibfk_1` FOREIGN KEY (`adminID`) REFERENCES `accounts` (`accountID`) ON DELETE CASCADE ON UPDATE CASCADE) 

错误意味着什么以及如何添加外键?

Screen shot of error

代码:

CREATE TABLE administrators(
  Username VARCHAR(7) NOT NULL PRIMARY KEY
, adminID INTEGER(1)
, accountID INTEGER(2)
, Hashed_Password VARCHAR(64)
, Salt VARCHAR(32)
, first_name VARCHAR(8)
, last_name VARCHAR(8)
, Email VARCHAR(25)
, Join_Date VARCHAR(16)
);
INSERT INTO administrators(Username,adminID,accountID,Hashed_Password,Salt,first_name,last_name,Email,Join_Date) VALUES ('admin',1,30,'9d26a3c61c0e2ce5c980ad8c7fff13c08cf898b6f3786930c73b68e3b88ad779','002640cb549ba08ee90cd79aee89cce7','Your','name','your email','2014/01/13 14:00');
INSERT INTO administrators(Username,adminID,accountID,Hashed_Password,Salt,first_name,last_name,Email,Join_Date) VALUES ('adminkt',2,31,'19612ae3ed04b7c224ba12db07be5ce0915eed3de351ccbf60508f948b476e5a','15cec5205c9e34355287acbb4d096a08','Kristi','Turman','kristi@gmail.com','2014/01/01 09:00');
INSERT INTO administrators(Username,adminID,accountID,Hashed_Password,Salt,first_name,last_name,Email,Join_Date) VALUES ('adminst',3,32,'0fec1e61a67e7a0fd3623e0d9d656fc765462557c2a5f5933ee37b63d9864d80','a1dca222c170e3d2b5dd2557d5a57090','Scott','Turman','turman@telstra.com.au','2014/01/20 14:30');
INSERT INTO administrators(Username,adminID,accountID,Hashed_Password,Salt,first_name,last_name,Email,Join_Date) VALUES ('adminrw',4,33,'8a35fd6de1e692dfa8277c405f93bba34926176285c85a13634e54e051b576f3','09d1fe391935b75f798053f866ee5052','Richard','Weathers','richo@gmail.com','2014/01/20 16:00');
INSERT INTO administrators(Username,adminID,accountID,Hashed_Password,Salt,first_name,last_name,Email,Join_Date) VALUES ('adminnc',5,34,'d54dc8e24b12ba4805777d6b6eac977094b73962a15e04f227ec40eb6ec56432','4d069acd30e4b0c6eb5e5f36c01d1482','Nicholas','Cutter','nicholas.cutter@gmail.com','2014/01/22 13:00');

2 个答案:

答案 0 :(得分:0)

administrators表中的记录更有可能与account表中的记录不匹配。如果您要添加如下所示的外键:administrators.adminID -> accounts.accountID,则必须确保administrators中的所有记录都与adminID字段对应accountID字段{1}}表。

如果accounts表中没有匹配的记录,那么accounts就会失败。

例如,您的ALERT TABLE表格中必须至少有5条记录,其中accounts从1到5。

答案 1 :(得分:0)


也许你在adminID字段accounts上的accountID表上定义了一个外键,现在你试图用管理员表添加一个元组,其管理ID不是&# 39; t存在于帐户表中。

打开phpmyadmin,查看管理员表上的索引部分(administrator-> Structure-> Indexes)并删除任何无用的索引。

[编辑]

帐户表格不包含您要在上面插入的管理员ID!