mysql - 密钥规范中使用的 BLOB/TEXT 列“名称”没有密钥长度(“名称”不是 PIMARY WTF)
问题描述
我很抱歉,但我不明白发生了这种情况。所以。
CREATE TABLE carsindrive (
`id` int(255) NOT NULL PRIMARY KEY,
`name` text NOT NULL,
`year` int(255) NOT NULL,
`car_color` varchar(255) NOT NULL,
FOREIGN KEY(`name`) REFERENCES `cars`(`name`),
FOREIGN KEY(`year`) REFERENCES `cars`(`year`),
FOREIGN KEY(`car_color`) REFERENCES `cars`(`car_color`)
);
为什么我有这个错误?
#1170 - 密钥规范中使用的 BLOB/TEXT 列“名称”没有密钥长度
解决方案
这是基本限制,你可以看这里
https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html
“不支持外键列上的索引前缀。因此,BLOB 和 TEXT 列不能包含在外键中,因为这些列上的索引必须始终包含前缀长度。”
推荐阅读
- mysql - MySQL:连接 3 个具有不同值的表
- javascript - 导入类时“不能在模块外使用导入语句”和“未捕获的语法错误:意外的标识符”
- numpy - python 3.10 32 位的 Numpy 轮子是否可用
- react-native - 无法编译构建 gradle React Native
- vba - 棘手的 Vba 随机提取少量有条件的数据
- reactjs - 在 FlatList 中隐藏选择的项目
- 3d - 在 3D 空间中沿圆的圆周移动一个点
- java - Firebase Query 从两个节点一起获取数据
- javascript - JavaScript - 将日期转换为 ISOString(),毫秒舍入为两位数
- postgresql - 重置 Row_Number 窗口函数