我要做的是为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)
错误意味着什么以及如何添加外键?
代码:
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');
答案 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!