我不理解我得到的错误。唯一超过767的字段是password
,但它不是索引或任何内容。
mysql> CREATE TABLE users (
-> id INTEGER NOT NULL AUTO_INCREMENT,
-> email VARCHAR(256) NOT NULL,
-> password VARCHAR(1024) NOT NULL,
-> date_added INTEGER,
-> PRIMARY KEY (id),
-> UNIQUE (email)
-> );
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
答案 0 :(得分:3)
<强> VARCHAR(1024)强>
MySQL将VARCHAR值存储为1字节或2字节长度前缀加数据。长度前缀表示值中的字节数。如果值不超过255个字节,则VARCHAR列使用一个长度字节;如果值可能需要超过255个字节,则使用两个长度字节。
在MySQL 5.0.3之前,长度规格大于 255 的VARCHAR列将转换为可以保存给定长度值的最小TEXT类型。例如,VARCHAR(500)转换为TEXT,VARCHAR(200000)转换为MEDIUMTEXT。
参考:http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html