修改Mysql索引长度限制解决767 byte限制问题
报错specified key was too long; max key length is 767 bytes原因msyql5.6及以前版本, 默认索引最大长度767bytes若使用utf8mb4
报错
specified key was too long; max key length is 767 bytes
原因
msyql5.6及以前版本, 默认索引最大长度767bytes
若使用utf8mb4格式编码(utf8字符占用3字节,utf8mb4字符占用4字节)
则单个字段长度不能超过191
5.7及之后版本, 限制放开到3072 bytes
解决方案
一、将数据库版本升级到5.7版本或以上
二、修改相关配置,增加操作以解决
解决方案如下:
innodb_large_prefix = on
innodb_file_format = barracuda
innodb_file_per_table = on
- 2、在create中添加row_format=dynamic
create table sql_test(
id int ,
name varchar(200),
server_id varchar(30),
id_num1 varchar(30),
id_num2 varchar(30),
link varchar(500),
primary key (id),
key sql_test_name (name))
engine=innodb row_format=dynamic;
这样做的缺点
会造成查询性能下降
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
相关文章:
-
MySQL中怎么匹配年月
一般数据库中给到的时间都是年-月-日形式的,那怎么匹配年-月/的形式?如2021年8月怎么写(怎么在数据库中查询到关于2021年8月的数据):法一:使用mont...
[阅读全文]
-
MySQL中约束的实现示例
前言数据库中的约束是确保数据完整性和准确性的重要手段。通过对数据表字段的约束设置,可以限制数据的取值范围、确保数据的唯一性以及建立表与表之间的关联关系。本文将深...
[阅读全文]
-
问题本人在使用不同版本下进行操作时,就会出现中文乱码的问题。例如我本地安装mysql8,服务器安装的是mysql5,然后本地连接服务器的mysql后,执行sql脚本之后发现中文全部…
-
注:本文在测试环境升级测试,建议先在测试环境验证。在生产环境下还是先评估下,mysql-5.7.42为二进制方式安装,所以用mysql-8.2.0二进制包升级1、操作环境1、查看当…
-
1.mycat的管理工具mycat默认开通2个端口,可以在server.xml中进行修改。8066 数据访问端口,即进行 dml 和 ddl 操作。9066 数据库管理端口,即 m…
-
注:本文在测试环境升级测试,建议先在测试环境验证。mysql-5.7.42为rpm安装,所以用rpm方式升级1、升级准备1、数据备份:在升级之前,务必对当前的 mysql 5.7 …
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论