这句话有什么问题?

use*_*729 4 mysql mysql-error-1071

mysql> create table newsgroup(
    ->  id integer unsigned NOT NULL AUTO_INCREMENT,
    ->  creater integer unsigned NOT NULL,
    ->  coremember integer unsigned DEFAULT NULL,
    ->  name varchar(300) not null unique,
    ->  description text,
    ->  created datetime not null,
    ->  PRIMARY KEY (id)
    -> );
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
mysql>
Run Code Online (Sandbox Code Playgroud)

我换300250,没关系.但我真的不明白.

Qua*_*noi 6

您的数据库编码设置为 UTF8

一个UTF8角色最多可能需要3字节中MySQL,所以767字节255字符.

UNIQUE建议不要在此类长文本字段上创建索引.

而是创建一个普通的前缀索引

CREATE INDEX ix_newsgroup_name ON newsgroup (name (30))
Run Code Online (Sandbox Code Playgroud)

,这足以进行前缀搜索,并添加另一列来存储MD5将确保唯一性的哈希.