为什么获胜';t我的外键是在MySQL中创建的


Why won't my foreign key create in MySQL?

我尝试了许多不同的方法来创建带有外键的表,并尝试插入phpMyAdmin。然而,它并没有像我预期的那样起作用。

以下是我到目前为止所做的:

CREATE TABLE user (
    user_id BIGINT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    user_name VARCHAR(50) NOT NULL,
    user_password VARCHAR(50) NOT NULL);

这非常好用。然而,如果我试图添加一个带有外键的表,它会拒绝创建:

CREATE TABLE article (
    article_id INT(20) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    article_title VARCHAR(100) NOT NULL,
    article_content VARCHAR(1000) NOT NULL,
    user_id INT(10) NOT NULL,
    FOREIGN KEY (user_id) REFERENCES user (user_id));

这不会像预期的那样工作,也不会将表添加到MySQL数据库中。我得到这个错误:

无法添加外键约束

我该怎么修?

我们在评论中发现,如果主键是这样定义的:

user_id BIGINT(10) UNSIGNED

那么像这样的外键将不起作用,因为它需要在签名性上匹配(我认为类型也是):

user_id INT(10) NOT NULL

这很好:

user_id BIGINT(10) UNSIGNED NOT NULL

这里有一个Fiddle来演示它的工作原理。