gpt4 book ai didi

MySQL 无法添加行 : foreign key constraint fails

转载 作者:搜寻专家 更新时间:2023-10-30 22:31:02 25 4
gpt4 key购买 nike

我在将数据插入表格时遇到问题。我已经多次重新创建这两个表,试图解决我的问题。第一个表 login 包含一个 id(主键)、用户名和密码。第二个表 userinfo 包含一个 id(主键)、名字、姓氏、电子邮件和 login$id(引用登录主键 id 的外键)。我可以很好地插入登录表,我总是首先插入它,以便第二个表可以获得第一个表的 ID 用作外键。但是一旦我将数据插入到 userinfo 表中,我就会得到 错误 1452:无法添加或更新子行:外键约束失败。 我不知道为什么它总是无法插入。请提供任何帮助,谢谢。

+-------+------------------+------+-----+---------+----------------+
| 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 查询 userinfo 表没有登录 ID。您可以使用 LAST_INSERT_ID() MySQL 函数获取最后插入的 login id,并修改如下查询:

INSERT INTO login (user, passwd) VALUES ('DDan', 'Password1');
INSERT INTO userinfo (firstN, lastN, email, login$id) VALUES ('Dan', 'Dan', 'email@yahoo.com', LAST_INSERT_ID());

这是 SQL Fiddle ,这里是 LAST_INSERT_ID() 的文档.

关于MySQL 无法添加行 : foreign key constraint fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43312788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com