1071 - 指定的密钥太长;最大密钥长度为 1000 字节 [重复]
Posted
技术标签:
【中文标题】1071 - 指定的密钥太长;最大密钥长度为 1000 字节 [重复]【英文标题】:1071 - Specified key was too long; max key length is 1000 bytes [duplicate] 【发布时间】:2017-02-27 19:48:33 【问题描述】:导入我拥有的 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'”。
我无法获得新的 SQLImportfile。
我在本地机器上使用 XAMPP。
【问题讨论】:
您指定了一个由 510 个字符组成的复合键,但每个 UTF-8 字符可能长达 4 个字节,因此您请求的键大小超过 2K,这是 MySQL 不喜欢的。缩小复合键的大小以便继续。 我该怎么做? 【参考方案1】:因为您的主键是两个 UTF8 VARCHAR(255) 列上的多列主键,所以索引大小是两列的大小相加。
UTF8 列上的索引会自动分配所有可能的空间,其中每个字符最多可占用 3 个字节。因此,您的索引大小为 255 个字符 * 3 个字节 * 2 列 = 1530 个字节。
MyISAM 的索引限制为 1000 字节。 InnoDB 的限制更小(767 字节),除非您使用的是 MySQL 5.7.7+,在这种情况下,默认限制为 3072 字节。
尝试减小索引大小。通常,索引大小越小,查找性能就越好。
【讨论】:
以上是关于1071 - 指定的密钥太长;最大密钥长度为 1000 字节 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥会出现此错误 #1071 - 指定的密钥太长;最大密钥长度为 1000 字节? [复制]
#1071 - 指定的密钥太长;最大密钥长度为 767 字节
语法错误或访问冲突:1071 指定的密钥太长;最大密钥长度为 767 字节 [重复]
错误:#1071 - 指定的密钥太长;最大密钥长度为 1000 字节 - mysql 5.0.91