如果这很重要,我也将其设置为唯一
我设法为varchar设置的最大值是 745 (它也设置为唯一)。
答案 0 :(得分:4)
取决于您运行的MySQL版本,在5.0.3之前,varchar有255个字符的限制:
VARCHAR列中的值是 变长字符串。长度 可以指定为0到0之间的值 在MySQL 5.0.3之前255,并且0到 5.0.3及更高版本中的65,535。
答案 1 :(得分:2)
<强>更新强>
可能与1000字节的最大密钥长度有关:
最大密钥长度为1000个字节。这也可以通过更改源和重新编译来更改。对于长度大于250字节的密钥的情况,使用比默认的1024字节更大的密钥块大小。
由于为密钥创建了索引,并且因为它在没有索引的情况下工作,这是有道理的
不过,您可以在大于1000字节的varchar
列上建立索引,您可以在下面的答案中阅读。
或者,如果您使用InnoDB,那么有一些restrictions:
索引键前缀最多可达767个字节。请参见第12.1.8节“CREATE INDEX语法”。
我认为这是为了确保索引不会变得太大并且可以快速接受。
如果字符串列很可能在第一个字符数上有唯一的前缀,那么最好只使用MySQL支持在列的最左边部分创建索引来索引此前缀(参见第12.1节) .8,“CREATE INDEX语法”)。 更短的索引更快,不仅因为它们需要更少的磁盘空间,而且因为它们还会在索引缓存中为您提供更多的匹配,从而减少磁盘搜索次数。请参见第7.5.3节“调整服务器参数”。
这也意味着您可以定义应该编入索引的此类列的第一个n
字符。也许这有助于规避问题。
示例:
CREATE INDEX part_of_name ON customer (name(10));
答案 2 :(得分:1)
旧的mysql?
5和更新版本可以使用long varchar
http://dev.mysql.com/doc/refman/5.0/en/char.html
VARCHAR列中的值是 变长字符串。长度 可以指定为0到0之间的值 在MySQL 5.0.3之前255,并且0到 5.0.3及更高版本中的65,535。 a的有效最大长度 MySQL 5.0.3及更高版本中的VARCHAR是 受最大行大小限制 (65,535字节,在其中共享 所有列)和字符集 使用
答案 3 :(得分:1)
围绕MySQL手册的小访问应该是有用的: http://dev.mysql.com/doc/refman/5.0/en/char.html
VARCHAR列中的值是可变长度字符串。长度可以指定为MySQL 5.0.3之前的0到255之间的值,5.0.3及更高版本中的0到65,535之间的值。 MySQL 5.0.3及更高版本中VARCHAR的有效最大长度受最大行大小(65,535字节,在所有列之间共享)和使用的字符集的限制。
另外一个: 键值长度不能超过500个字符。 (截至http://bugs.mysql.com/bug.php?id=2130报告)
答案 4 :(得分:0)
下一步的长度可能是text
,但据我所知,它有一些非常大的数据库内长度限制,如果有的话,所以你必须在编程sql /中提供限制后端应用程序逻辑。