为啥会出现此错误 #1071 - 指定的密钥太长;最大密钥长度为 1000 字节? [复制]

Posted

技术标签:

【中文标题】为啥会出现此错误 #1071 - 指定的密钥太长;最大密钥长度为 1000 字节? [复制]【英文标题】:why this error occur #1071 - Specified key was too long; max key length is 1000 bytes? [duplicate]为什么会出现此错误 #1071 - 指定的密钥太长;最大密钥长度为 1000 字节? [复制] 【发布时间】:2012-09-18 12:36:37 【问题描述】:

可能重复:“Specified key was too long; max key length is 1000 bytes”

SQL 查询:

CREATE TABLE  `freecomputermarket`.`Members` (

`ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`UserName` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
`Email` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
`Password` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
`BirthDate` DATE NOT NULL ,
`RegisterationDate` DATE NOT NULL ,
`ActivationCode` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
`ActivationLink` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,
`IsActive` BIT( 0 ) NOT NULL ,
`Gender` CHAR( 6 ) NOT NULL ,
UNIQUE (
`UserName` ,
`ActivationCode` ,
`ActivationLink`
)
) ENGINE = MYISAM

当我执行此查询时,出现错误“#1071 - 指定的密钥太长;最大密钥长度为 1000 字节”?

【问题讨论】:

重复:***.com/questions/1037598/…***.com/questions/1814532/…***.com/questions/10642429/…***.com/questions/8923854/…***.com/questions/8746207/… 和更多...只需使用搜索。 【参考方案1】:

UNIQUE 索引中有三个 255 个字符的 UTF8 列。每个 UTF8 字符最多可以占用 3 个字节,因此每列最多可以占用 765 个字节,这使得整个索引总共需要 2295 个字节,如错误所示,超过了 1000 个字节的限制。

【讨论】:

以上是关于为啥会出现此错误 #1071 - 指定的密钥太长;最大密钥长度为 1000 字节? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

错误:#1071 - 指定的密钥太长;最大密钥长度为 1000 字节 - mysql 5.0.91

SQL 错误 #1071 - 指定的键太长;最大密钥长度为 767 字节

php 语法错误或访问冲突:1071指定密钥太长;最大密钥长度为767字节

SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节

Laravel 迁移错误:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节 laravel 5.3

1071 - 指定的密钥太长;最大密钥长度为 1000 字节 [重复]