当前位置: 代码网 > it编程>数据库>Mysql > 修改Mysql索引长度限制解决767 byte限制问题

修改Mysql索引长度限制解决767 byte限制问题

2024年05月15日 Mysql 我要评论
报错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版本或以上

二、修改相关配置,增加操作以解决

解决方案如下:

  • 1、在my.ini中修改配置:
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;

这样做的缺点

会造成查询性能下降

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

  • MySQL中怎么匹配年月

    MySQL中怎么匹配年月

    一般数据库中给到的时间都是年-月-日形式的,那怎么匹配年-月/的形式?如2021年8月怎么写(怎么在数据库中查询到关于2021年8月的数据):法一:使用mont... [阅读全文]
  • MySQL中约束的实现示例

    MySQL中约束的实现示例

    前言数据库中的约束是确保数据完整性和准确性的重要手段。通过对数据表字段的约束设置,可以限制数据的取值范围、确保数据的唯一性以及建立表与表之间的关联关系。本文将深... [阅读全文]
  • mysql执行脚本导入表和数据后中文注释乱码的问题解决

    问题本人在使用不同版本下进行操作时,就会出现中文乱码的问题。例如我本地安装mysql8,服务器安装的是mysql5,然后本地连接服务器的mysql后,执行sql脚本之后发现中文全部…

    2024年05月15日 数据库
  • mysql-5.7.42升级到mysql-8.2.0(二进制方式)

    注:本文在测试环境升级测试,建议先在测试环境验证。在生产环境下还是先评估下,mysql-5.7.42为二进制方式安装,所以用mysql-8.2.0二进制包升级1、操作环境1、查看当…

    2024年05月15日 数据库
  • 使用Mycat-eye管理Mycat数据库服务的操作

    1.mycat的管理工具mycat默认开通2个端口,可以在server.xml中进行修改。8066 数据访问端口,即进行 dml 和 ddl 操作。9066 数据库管理端口,即 m…

    2024年05月15日 数据库
  • mysql5.7.42到mysql8.2.0的升级(rpm方式)

    注:本文在测试环境升级测试,建议先在测试环境验证。mysql-5.7.42为rpm安装,所以用rpm方式升级1、升级准备1、数据备份:在升级之前,务必对当前的 mysql 5.7 …

    2024年05月15日 数据库

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com