【发布时间】:2014-03-17 12:24:08
【问题描述】:
我在 mySQL 中使用外键时遇到问题。我看不到我所做的代码有任何问题,但是当我使用外键(公司表(用户 ID)将数据插入表中时它不起作用。抱歉含糊不清..第一次在这里问。
CREATE TABLE users
(
userid INT(4) NOT NULL auto_increment,
username VARCHAR(30) NOT NULL,
email VARCHAR(32) NOT NULL,
password VARCHAR(32) NOT NULL,
companyName VARCHAR(32) NOT NULL,
address VARCHAR(30) NOT NULL,
PRIMARY KEY (userid)
) ENGINE=INNODB;
DROP TABLE IF EXISTS company;
CREATE TABLE company
(
userid int(4) NOT NULL,
companyid INT(4) NOT NULL auto_increment,
companyName VARCHAR(32) NOT NULL,
address VARCHAR(30) NOT NULL,
telephone INT(20) NOT NULL,
email VARCHAR(30) NOT NULL,
textbody VARCHAR(1800) NOT NULL,
textbody2 VARCHAR(1500) NOT NULL,
PRIMARY KEY (companyid),
FOREIGN KEY (userid) REFERENCES users(userid)
) ENGINE=INNODB;
这是插入语句
INSERT INTO company (companyName, address, telephone, email, textbody, textbody2)VALUES
('blaaah', 'Ireland', '12345', 'emailAddress', 'randomtext', 'morerandomtext');
这是错误
#1452 - Cannot add or update a child row: a foreign key constraint fails(`users`.`company`, CONSTRAINT `company_ibfk_1` FOREIGN KEY (`userid`) REFERENCES ` users` (`userid`))
【问题讨论】:
-
“它不起作用”不是可接受的错误描述。
-
显示
insert和错误语句。 -
哪里出错了!因为代码没有错误!
-
您没有将
userid的值插入到公司表中 - 这意味着您正在插入NULL。但是 MySQL 试图变得聪明并且会默默地将NULL转换为0- 然后它失败了没有用户使用userid = 0: sqlfiddle.com/#!2/4edfa/1 你需要为userid提供一个有效的(现有的)值插入时的列。
标签: mysql sql foreign-keys