当前位置:   article > 正文

MySQL提示 “Specified key was too long; max key length is 767 bytes”_mysql报错1071 767

mysql报错1071 767
mysql 索引过长1071-max key length is 767 byte 处理

RDS Mysql 问题描述

RDS MySQL在大字段上创建索引时,偶尔会遇到如下错误。

Error 1071: Specified key was too long; max key length is 767 bytes.
  • 1

在这里插入图片描述

问题原因

由于MySQL的InnoDB引擎表索引字段长度的限制为767字节,因此对于多字节字符集的大字段或者多字段组合,创建索引时会出现该问题。

注:以utf8mb4字符集字符串类型字段为例。utf8mb4是4字节字符集,默认支持的索引字段最大长度是191字符(767字节/4字节每字符≈191字符),因此在varchar(255)或char(255)类型字段上创建索引会失败。详情请参见MySQL官网文档。
  • 1

在控制台的 参数设置 页面修改 innodb_large_prefix 参数值为 ON,然后单击 提交
在这里插入图片描述

Mysql 问题描述

在5.6中可以在界面上操作修改,在5.7中不能修改。在5.6中默认为 off,可以在界面上修改为 on;在5.7中默认为 on,不用修改。

(1)可在 my.cnf 中配置:

default-storage-engine=INNODB
innodb_large_prefix=on
  • 1
  • 2

(2)也可在 sql 中更改

MySQL [(none)]> show variables like '%innodb_large_prefix%';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| innodb_large_prefix | OFF   |
+---------------------+-------+
1 row in set (0.03 sec)

MySQL [(none)]> set global innodb_large_prefix=on;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MySQL [(none)]> show variables like '%innodb_large_prefix%';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| innodb_large_prefix | ON    |
+---------------------+-------+
1 row in set (0.02 sec)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/606189
推荐阅读
相关标签
  

闽ICP备14008679号