sql - 如何解决 'Foreign key constraint is incorrectly formed'问题

标签 sql foreign-keys

我正在尝试创建一个名为 wp_tokens 的数据库表,该表与另一个名为 wp_users 的表具有外键关系。但是,每次我尝试运行创建表 SQL 时,都会收到错误“外键约束格式不正确”。我尝试了对同一代码进行多次重新编辑,但我就是无法弄清楚发生了什么。

这是wp_users的代码

CREATE TABLE `wp_users` (
    `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    `user_login` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
    `user_pass` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
    `user_nicename` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
    `user_email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
    `user_url` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
    `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
    `user_activation_key` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
    `user_status` int(11) NOT NULL DEFAULT '0',
    `display_name` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
    PRIMARY KEY (`ID`),
    KEY `user_login_key` (`user_login`),
    KEY `user_nicename` (`user_nicename`),
    KEY `user_email` (`user_email`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 
COLLATE=utf8mb4_unicode_ci

这是 wp_tokens 的 SQL

CREATE TABLE `wp_tokens` (
    id mediumint(9) NOT NULL AUTO_INCREMENT,
    `user_id` bigint(20) NOT NULL,
    `token` varchar(255) NOT NULL,
    PRIMARY KEY  (id),
    FOREIGN KEY (user_id) REFERENCES wp_users (`ID`)
) 

任何帮助将不胜感激!

最佳答案

无符号很重要——类型必须相同。试试这个:

CREATE TABLE `wp_tokens` (
      id mediumint(9) NOT NULL AUTO_INCREMENT,
      `user_id` bigint(20) unsigned NOT NULL,
      `token` varchar(255) NOT NULL,
      PRIMARY KEY  (id),
      FOREIGN KEY (user_id) REFERENCES wp_users (`ID`)
) 

Here是一个reextester。

关于sql - 如何解决 'Foreign key constraint is incorrectly formed'问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54084216/

相关文章:

sql - 比较日期范围

php - MySQL:从多个表中选择嵌套列表

mysql - 通过sql查询合并非空结果字段

Mysql连接3表查询

python - Django 从模型返回特定字段作为外键

python - django ForeignKey 到任何类型的模型

c# - 从 C# DbCommand 向 SQL DB 插入 NULL

sql - 关于外键和主键的 Postgres 和索引

Django 按最新相关对象过滤

java - 具有公共(public)外键的 Hibernate ManyToMany 关系