Mysql 导入数据 返回 #1071 -求高手帮解决

Mysql 导入数据 返回 #1071 -求高手帮解决,第1张

建立索引时,数据库计算key的长度是累加所有Index用到的字段的char长度后再按下面比例乘起来不能超过限定的key长度1000:

latin1 = 1 byte = 1 character

uft8 = 3 byte = 1 character

gbk = 2 byte = 1 character

如果我没猜错的话你的字符编码应该是utf8,所以key的长度就是(100+250)*3=1050>1000,所以会报错,你把它改小点就行了

设置电脑显示隐藏文件夹

2

打开C:\ProgramData,找到MySQL文件夹,并将其删除

3

重新运行MySQL安装程序,顺利安装MySQL

1. 数据库版本:阿里云RDS MySQL5.1

mysql>select @@version

+-------------------------------+

| @@version |

+-------------------------------+

| 5.1.61-Alibaba-rds-201404-log |

+-------------------------------+

1 row in set (0.00 sec)

2. 测试的表结构信息

mysql>show create table tb2\G

*************************** 1. row ***************************

Table: tb2

Create Table: CREATE TABLE `tb2` (

`a` varchar(255) DEFAULT NULL,

`b` varchar(255) DEFAULT NULL,

`c` varchar(255) DEFAULT NULL,

`d` varchar(1000) DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

3. 测试加索引

(1)添加单列索引,能够添加成功(报出warning),但实际添加的是前缀索引。

mysql>alter table tb2 add index idx1 (d)

Query OK, 0 rows affected, 2 warnings (0.00 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql>show warnings

+---------+------+----------------------------------------------------------+

| Level | Code | Message |

+---------+------+----------------------------------------------------------+

| Warning | 1071 | Specified key was too longmax key length is 1000 bytes |

| Warning | 1071 | Specified key was too longmax key length is 1000 bytes |

+---------+------+----------------------------------------------------------+

2 rows in set (0.00 sec)

表结构信息:

mysql>show create table tb2\G

*************************** 1. row ***************************

Table: tb2

Create Table: CREATE TABLE `tb2` (

`a` varchar(255) DEFAULT NULL,

`b` varchar(255) DEFAULT NULL,

`c` varchar(255) DEFAULT NULL,

`d` varchar(1000) DEFAULT NULL,

KEY `idx1` (`d`(333))

) ENGINE=MyISAM DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

(2)添加组合索引,会执行失败。

mysql>alter table tb2 add index idx1 (a,b)

ERROR 1071 (42000): Specified key was too longmax key length is 1000 bytes

4. 分析

myisam存储引擎在创建索引的时候,索引键长度是有一个较为严格的长度限制的,所有索引键最大长度总和不能超过1000,而且不是实际数据长度的总和,而是索引键字段定义长度的总和。

主要字符集的计算方式:

latin1 = 1 byte = 1 character

uft8 = 3 byte = 1 character

gbk = 2 byte = 1 character


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7329128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存