我想在MySQL
服务器中创建一个表mediumtext
列为UNIQUE KEY
CREATE TABLE `parts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` mediumtext NOT NULL,
`display_status` int(11) NOT NULL,
UNIQUE KEY `name` (`name`),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
但是这出错了
BLOB/TEXT column 'name' used in key specification without a key length
当我将`name`的类型更改为varchar时,它可以工作!
你能告诉我是否可以将文本列设为UNIQUE KEY
答案 0 :(得分:25)
基本上,您不能将Text
列用作UNIQUE
键。因为实际上这样一个大的列不会是唯一的,并且可能有更多的重复。因此,请转到hashing
方法并将该输出用作UNIQUE约束。
希望这有助于你
答案 1 :(得分:23)
varchar长度的限制255不再适用。来自documentation:
VARCHAR列中的值是可变长度字符串。长度可以指定为MySQL 5.0.3之前的0到255之间的值,5.0.3及更高版本中的0到65,535之间的值。
唯一索引必须具有已知的最大长度(由于其内部实现而需要mysql),因此请使用具有足够大值的varchar以适合您最长的预期值,例如
...
`name` varchar(65535) NOT NULL, -- for example
...