为什么会出现这个错误 #1071 - 指定的键太长;最大键长度为1000字节?

11 浏览
0 Comments

为什么会出现这个错误 #1071 - 指定的键太长;最大键长度为1000字节?

可能重复:

“指定的键太长;最大键长度为1000字节”

SQL查询:

创建表`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字节”?

0
0 Comments

为什么会出现错误 #1071 - 指定的键太长;最大键长度为1000字节?

在您的UNIQUE索引中有三个255字符的UTF8列。每个UTF8字符最多可以占用3个字节,因此每列最多可以占用765个字节,这使得整个索引的总字节数达到2295个字节,超过了1000个字节的限制,正如错误所指出的那样。

解决方法:

解决此问题的方法是减少索引列的长度,以确保总字节数不超过1000个字节的限制。以下是几种解决方法:

1. 缩短列的长度:

- 将列的长度减少到较短的值,以确保总字节数在1000个字节以下。

2. 更改索引类型:

- 将索引类型更改为非唯一索引(INDEX)而不是唯一索引(UNIQUE)。非唯一索引没有总字节数的限制。

3. 更改字符集和排序规则:

- 将字符集和排序规则更改为占用更少字节的选项,如Latin1字符集。

- 请注意,更改字符集和排序规则可能会影响数据的存储和排序方式。

请根据您的需求选择适合的解决方法,并确保在更改数据库结构之前备份数据以防止意外数据丢失。

0