首页 > 解决方案 > 密钥规范中使用的 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 列“名称”没有密钥长度

标签: mysqldatatablesphpmyadmin

解决方案


这是基本限制,你可以看这里

https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html

“不支持外键列上的索引前缀。因此,BLOB 和 TEXT 列不能包含在外键中,因为这些列上的索引必须始终包含前缀长度。”


推荐阅读