我已经尝试了许多不同的方法来创建带有外键的表并尝试插入到 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 数据库中。我收到此错误:
Cannot add foreign key constraint
我该如何解决?
最佳答案
我们在评论中发现,如果这样定义主键:
user_id BIGINT(10) UNSIGNED
那么像这样的外键将不起作用,因为它需要在签名上匹配(我认为类型也是如此):
user_id INT(10) NOT NULL
这很好用:
user_id BIGINT(10) UNSIGNED NOT NULL
这是一个 Fiddle以证明它的工作。
关于php - 为什么我的外键不能在 MySQL 中创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29546481/