我在将数据插入表中时遇到问题。我已经多次尝试解决我的问题,重新创建了这两个表。第一个表登录包含一个id(主键),用户名和密码。第二个表userinfo包含一个ID(主键),名字,姓氏,电子邮件和登录$ id(引用登录主键ID的外键)。我可以很好地插入到登录表中,我总是首先插入,这样第二个表就可以获得第一个表的ID作为外键。但是,一旦我将数据插入到用户信息表中,我收到 错误1452:无法添加或更新子行:外键常量失败。 我不知道为什么它一直插入失败。任何帮助都会很好,谢谢。MySQL无法添加行:外键约束失败
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| user | varchar(50) | NO | | NULL | |
| passwd| varchar(50) | NO | | NULL | |
+-------+------------------+------+-----+---------+----------------+
+-------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| firstN | varchar(50) | NO | | NULL | |
| lastN | varchar(50) | NO | | NULL | |
| email | varchar(125) | NO | | NULL | |
| login$id | int(10) unsigned | NO | MUL | NULL | |
+-------------------+------------------+------+-----+---------+----------------+
这里是我的表
CREATE TABLE login(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
user VARCHAR(50) NOT NULL,
passwd VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE userinfo(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
firstN VARCHAR(50) NOT NULL,
lastN VARCHAR(50) NOT NULL,
email VARCHAR(125) NOT NULL,
login$id INT UNSIGNED NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (login$id) REFERENCES login(id)
);
请你分享一下'INSERT'查询吗? –
对于登录表:INSERT INTO login(user,passwd)VALUES('DDan','Password1');对于userinfo表:INSERT INTO userinfo(firstN,lastN,email)VALUES('Dan','Dan','[email protected]'); - –
这可能是因为'logininfo'行在'userinfo'或'userinfo'行有错误的登录ID之前没有被持久化。这是一个简单的例子(http://sqlfiddle.com/#!9/16addb/1/0)。你能否发布代码(执行这些插入)? –