mysql - 如何创建外键?
问题描述
我正在尝试从我的用户表中创建一个外键“idUsers”。我希望能够在我的画廊表中使用它。每当我尝试时,我都会收到错误:
#1005 - 无法创建表
useraccounts
。users
(errno: 150 "外键约束格式不正确")
CREATE TABLE users (
idUsers int(11) AUTO_INCREMENT PRIMARY KEY not null,
uidUsers TINYTEXT NOT NULL,
emailUsers TINYTEXT NOT NULL,
pwdUsers LONGTEXT NOT NULL,
about_me varchar (228) NOT Null,
FOREIGN KEY (idUsers) REFERENCES users(idUsers)
);
我希望它创建表,但实际输出是错误:
#1005 - 无法创建表
useraccounts
。users
(错误号:150“外键约束格式不正确”)。
解决方案
在这种情况下,您的 uidUsers 正在引用(或者更好的是,您希望它引用)同一张表上的主键。在您的图库中,您需要有字段 userId,它指向用户表中的 idUsers。因此,表库中的 userId 是指向正确用户的外键。你可能想要这样的东西(注意画廊表中指向用户的外键)
CREATE TABLE users (
idUsers int(11) AUTO_INCREMENT PRIMARY KEY not null,
emailUsers TINYTEXT NOT NULL,
pwdUsers LONGTEXT NOT NULL,
about_me varchar (228) NOT Null
);
CREATE TABLE gallery (
idGallery int(11) AUTO_INCREMENT PRIMARY KEY not null,
idUser int(11) not null,
FOREIGN KEY (idUser) REFERENCES users(idUsers)
);
推荐阅读
- angular - 如何在三元运算符上添加routerLink?
- python - 无论如何在python中使用来自Weka的.model文件?
- sql-server - 如何在 SQL Server 中将 VARCHAR 列转换为 DECIMAL 而无需舍入?
- sql - 在 SQL 中将 n 与 (n+1) 进行比较
- javascript - 如何安装和使用 three.js ES6 模块
- dataweave - Dataweave JSON 转 XML 格式-Mule-4
- html - 悬停时更改图像的亮度
- c - FPU 扩展 '+fpv5' 和 '+fp.dp' 对输出二进制文件没有影响(STM32F767ZIT ARM Cortex-M7)
- php - php解析和合并数组返回错误数据
- reactjs - createHigherOrderComponent 中的 useState