php - 为什么我的外键不能在 MySQL 中创建?

标签 php mysql database phpmyadmin

我已经尝试了许多不同的方法来创建带有外键的表并尝试插入到 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/

相关文章:

javascript - NG-REPEAT 什么也不显示..即使数据解析成功

php - 为什么 file_put_contents 在此基准测试中表现不佳?

mysql - 在将数据库从一个数据库迁移到另一个数据库时保持数据库一致性的最佳方法是什么

Java不运行带有参数的准备好的语句并且不抛出任何错误

php - 根据 session 状态更改变量内容的错误

PHP从另一个文件中获取类中的变量

mysql - 为什么 MyModel.offset(n).find(20) 在带有 MySQL 的 Rails 3 中这么慢?

PHP/mySQL count($array[id]) = 1 即使表中有 8 个元素

php - Pdo多行插入问题

database - 在线同步数据库到html5离线数据库存储