MySQL指定密钥太长了

时间:2014-01-03 17:03:54

标签: mysql key varchar

我不理解我得到的错误。唯一超过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

1 个答案:

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

http://dev.mysql.com/doc/refman/5.0/en/char.html