gpt4 book ai didi

MySQL 错误 1005

转载 作者:行者123 更新时间:2023-11-29 14:10:10 36 4
gpt4 key购买 nike

我正在 MySQL 中创建 3 个表(Users、linkPosts、replyPosts)

前两个表执行得很好,但是当我尝试插入replyPosts的SQL时出现错误。以下是三个表的SQL代码:

第一个表 SQL 代码:工作正常

CREATE TABLE Users ( 
userName VARCHAR (20) NOT NULL PRIMARY KEY,
password VARCHAR (20),
firstName VARCHAR (200),
lastName VARCHAR (200),
bio VARCHAR (160),
email VARCHAR (200),
country VARCHAR (200)
);

第二个表的代码:工作正常

CREATE TABLE linkPosts ( 
linkPostID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
link VARCHAR(255),
linkDescription VARCHAR (140),
linkPostTime TIMESTAMP,
userName VARCHAR (20),
FOREIGN KEY (userName) REFERENCES Users(userName));

出现错误的第三个表:

CREATE TABLE replyPosts ( 
replyPostID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
reply VARCHAR (140),
replyPostTime TIMESTAMP,
userName VARCHAR (20),
linkPostID INT,
FOREIGN KEY (linkPostID) REFERENCES linkPosts(linkPostID),
FOREIGN KEY (userName) REFERENCES Users(userName));

我得到的错误如下:

Error 1005 : Can't create table 'mdb_aa847.replyPosts' (errno: 150)

我搜索并尝试了其他人的解决方案,但从未成功。任何人都可以找出错误在哪里吗?

提前致谢..

最佳答案

replyPosts已经存在吗?如果您有重复的外键名称,则可能会发生此错误。使用perror使用 errno (在您的情况下,错误为 150),您应该得到:

MySQL error code 150: Foreign key constraint is incorrectly formed

查看完整的 SQL 后,我认为这是由于创建 LinkPosts 表时 linkPostID 为 INT UNSIGNED 的事实,而在 ReplyPosts 表,linkPostID 为 INT。将其更改为 INT UNSIGNED 并查看它是否有效。

根据此处的文档 "foreign keys"如果是整数,则应具有相同的大小和符号。

顺便说一句,我仍然坚持使用 UserId 作为 Users 表的主键,而不是 UserName。每次在 Users 表中插入一条记录时,都会按 UserName 排序(因为它是主键,因此是聚集索引)。 UserName 字段 (Varchar(20)) 越大,对整个表进行排序所需的时间就越长。随着表的增长,将记录插入用户表会变得很麻烦。

关于MySQL 错误 1005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13624978/

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