sql - 如何解决“外键约束格式不正确”问题
问题描述
我正在尝试创建一个名为的数据库表,该表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
这是 SQLwp_tokens
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`)
)
任何帮助将不胜感激!
解决方案
这unsigned
很重要——类型必须相同。试试这个:
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`)
)
这是一个重新测试者。
推荐阅读
- sql - SQL Server 部分数据透视
- abap - 如何检查客户系统是否为 S/4 HANA Essentials(多租户)
- reactjs - 使用 typescript 模拟 forwardRef 组件 jest mockImplementation
- c++ - 使美元和插入符号仅在字符串的开头/结尾匹配,而不是在嵌入换行符之前/之后
- r - 在 Ubuntu 20.04 上安装 biomaRt R 包时出现 CURL_OPENSSL_3 问题
- java - Java 文件复制到非空目标文件夹
- vue.js - 如何在 Vuetify 中使 Appbar 透明且无填充
- javascript - 在 React 钩子清理中使用 requestAnimationFrame 是否安全
- sql - PostgreSQL 在冲突目标上插入多个
- python - 如何安全地附加到字典字典