将文本列设为唯一键

时间:2012-12-25 19:20:54

标签: mysql sql database unique-key

我想在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

2 个答案:

答案 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 
...