Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 1071-指定的密钥太长;最大密钥长度为1000字节_Mysql - Fatal编程技术网

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

Mysql 1071-指定的密钥太长;最大密钥长度为1000字节,mysql,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_R

我在导入我拥有的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字节 我已经试过了 “在导入文件之前设置全局存储\u engine='InnoDb'”

我无法获取新的SQLImportfile


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

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

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

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


尽量减少索引大小。通常,索引大小越小,搜索性能越好。

您指定了一个包含510个字符的复合密钥,但每个UTF-8字符可能多达4个字节,因此您请求的密钥大小超过2K,MySQL不喜欢。缩小复合密钥的大小以继续。我如何才能做到这一点?