gpt4 book ai didi

mysql - MySQL表添加FOREIGN KEY报错150

转载 作者:行者123 更新时间:2023-11-29 00:03:39 24 4
gpt4 key购买 nike

我不确定为什么我总是遇到外键问题,但我又遇到了。

当我运行时:

ALTER TABLE wishlist ADD CONSTRAINT FOREIGN KEY (user_id) REFERENCES user (user_id);

我得到:

Can't create table (errno: 150)

两个表都存在。两列都存在,并且它们都是同一类型 - bigint(20)。 user.user_id 是主键,但 wishlist.user_id 不是。两者都是 NOT NULL

这是用户表的开头(为了便于阅读,我将其截断):

+-----------------+------------------------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------------------+------+-----+-------------------+----------------+
| user_id | bigint(20) | NO | PRI | NULL | auto_increment |
| salt2 | varchar(24) | YES | | NULL | |
| gender | enum('MAN','WOMAN','EITHER') | NO | | NULL | |
| user_name | varchar(255) | NO | | NULL | |
| password | varchar(255) | NO | | NULL | |
| user_email | varchar(255) | NO | | NULL | |
| phone | varchar(20) | NO | | NULL | |

还有心愿单表:

+-----------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------+------+-----+---------+----------------+
| wish_id | int(11) | NO | PRI | NULL | auto_increment |
| link_hash | char(32) | YES | MUL | NULL | |
| user_id | bigint(20) | NO | | NULL | |
+-----------+------------+------+-----+---------+----------------+

我不是在创建一个被删除的表。

最佳答案

如果您使用的是 InnoDB,则 user_id 列必须是“key”或“primary key”类型,而不是 bigint 类型。该特定引擎不喜欢在非关键项上创建 FK 约束。

CREATE TABLE 'user' (
KEY 'user_id' ('user_id')
[... your columns here]
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

此外,确保两者使用相同的引擎和字符集,否则它仍然会失败。

关于mysql - MySQL表添加FOREIGN KEY报错150,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28528880/

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