MySQL 无法使用表 wp_users 创建外键引用

Posted

技术标签:

【中文标题】MySQL 无法使用表 wp_users 创建外键引用【英文标题】:MySQL can't create foreign key reference with table wp_users 【发布时间】:2021-07-21 14:56:38 【问题描述】:

我想创建一个表来保存 WordPress 项目的客户详细信息。我想将该表引用给 WordPress 用户,但它总是给我以下消息:

Error: 150 "Foreign key constraint is incorrectly formed")

我用谷歌搜索了很多,发现有几个人有同样的问题,但他们的修复方法对我来说不起作用。 我尝试离开 ON DELETE 和 ON UPDATE 并重命名我的列名,但没有改变错误消息。

在我的其他表中创建外键引用完全没有问题。只是 wp_users 不想被这样引用。

CREATE TABLE IF NOT EXISTS klienten(
    klienten_id INTEGER PRIMARY KEY auto_increment,
    fk_user_id BIGINT(20),

    FOREIGN KEY(fk_user_id) REFERENCES wp_users(ID) ON DELETE RESTRICT ON UPDATE CASCADE,

    name VARCHAR(50),
    telefonnummer VARCHAR(15),
    email VARCHAR(60),
    logo_url VARCHAR(120)
);

mysql 中使用 InnoDB 引擎、WordPress 版本 5.8 并在 phpmyadmin 中执行我的 SQL 脚本。

有人知道怎么回事吗?

【问题讨论】:

【参考方案1】:

https://codex.wordpress.org/Database_Description#Table:_wp_users 表示 wp_users.id 的类型为 BIGINT UNSIGNED

表中的fk_user_id 列是BIGINT。您必须确保数据类型兼容才能使一个外键引用另一个,而有符号整数类型和无符号整数类型之间的差异足以破坏这一点。

(20) 部分无关紧要,因为那是just a display hint anyway。但是签名与未签名对于这个目的很重要。

【讨论】:

以上是关于MySQL 无法使用表 wp_users 创建外键引用的主要内容,如果未能解决你的问题,请参考以下文章

MySQL - 无法定义外键

使用 mysql 工作台创建 CHAR 类型的外键时出错:错误 1005:无法创建表(错误号:150)

MYSQL创建表、约束、外键

MySQL无法创建外键查询外键的属性

MySQL 无法使用外键创建新表

无法关联两个 MySQL 表(外键)