MySQl:指定密钥太长..max是1000字节?

我试图在MySQL中创build一个表,声明如下:

CREATE TABLE tags (Tag VARCHAR(200) NOT NULL default '', Login VARCHAR(255) NOT NULL default '', PRIMARY KEY (Tag, Login)) ENGINE=MyISAM; 

但是我收到一个错误:

 ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes 

如果我将标记字段缩小为VARCHAR(78),则会创build该表,但VARCHAR(79)将失败。 为什么大于78的任何varchar大小失败? 我在网上读了一些关于MySQL把VARCHAR存储为UTF-8的文章,这个文件最多可能需要六个字节,但是79 * 6是474,这是在1000字节的限制之内,所以不能确定他们的UTF-8是否准确。

您的主键由标签和login组成,组合长度为355个字符。
如果Tag是78个字符,则总和是333,所以MySQL看起来像每字符3个字节的假设:

 (78 + 255) * 3 = 999, (79 + 255) * 3 = 1002 

也就是说,VARCHAR值是臭名昭着的不适合主键。

考虑添加一个INT来代替。