1071 - 指定密钥太长;最大密钥长度为1000字节

时间:2016-10-18 13:40:33

标签: mysql

我导入Sqlbackup时出现以下错误:

SQL-Befehl:

CREATE TABLE jos_hikashop_zone_link (
    zone_parent_namekey VARCHAR(255) NOT NULL,
    zone_child_namekey VARCHAR(255) NOT NULL,
    PRIMARY KEY (zone_parent_namekey, zone_child_namekey)
)
ENGINE = MYISAM
AVG_ROW_LENGTH = 49
CHARACTER SET utf8
COLLATE utf8_general_ci
MySQL meldet: Dokumentation

1071 - 指定密钥太长;最大密钥长度为1000字节

我试过 "设置GLOBAL storage_engine =' InnoDb'"在我导入文件之前。

我无法获得新的SQLImport文件。

我在本地计算机上使用XAMPP。

1 个答案:

答案 0 :(得分:3)

因为您的主键是两个UTF8 VARCHAR(255)列上的多列主键,所以索引大小是两个列的大小,加在一起。

UTF8列上的索引会自动分配所有可能的空间,其中每个字符最多可占用3个字节。因此,索引大小为255个字符* 3个字节* 2列= 1530个字节。

MyISAM对索引的限制为1000字节。 InnoDB的限制甚至更小(767字节),除非您使用的是MySQL 5.7.7+,在这种情况下默认限制为3072字节。

尝试减少索引大小。通常,索引大小越小,您的搜索性能就越好。