背景

今天迁移环境上阿里云的DMS建表

CREATE TABLE `xxl_job_registry` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `registry_group` varchar(50) NOT NULL,
  `registry_key` varchar(255) NOT NULL,
  `registry_value` varchar(255) NOT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4

直接提示 Specified key was too long; max key length is 767 bytes

并让我打开MySQL常见错误处理方法 · 语雀 查看解决方式

十三、Specified key was too long; max key length is 767 bytes

原因:mysql的“字符串类型”(varchar、char等)字段作为索引时,有一个约束单个索引字段存储长度不能超过767字节。

按照表为utf8mb4字符集时,一个字符需要4个字节存储。那么最大定义索引前缀为 767/4=191.即字段a varchar(500)要建立索引时需要定义前缀索引 a(191),不能超过191的一个值。

处理方法:utf8为3个字节存储一个字符,gbk为2个字节存储一个字符,依次类推得到对应字符串类型字段的前缀索引长度修正即可。结构设计修改路径:索引=》包含列=》前缀长度,进行设置。

如果是【库表同步】请直接联系你的DBA修改为和【源】数据库一致的编码。如何查看我的业务DBA是谁?

PS:索引767问题排查

显然这个方式并不是我想要的,很多业务已经测试过不可能去缩小字段

解决办法

1. 查看MySQL数据库当前的配置;

show variables like 'innodb_large_prefix';

2. 修改配置

在SQLYog、Navicat、命令行都可以执行以下语句

set global innodb_large_prefix=ON;//开启不限制索引长度

执行次命令需要一定的权限,如没有需要找管理员

3. 建表时需要指定ROW_FORMAT=Dynamic或compressed

CREATE TABLE `xxl_job_registry` (`id` int(11) NOT NULL AUTO_INCREMENT,`registry_group` varchar(50) NOT NULL,`registry_key` varchar(255) NOT NULL,`registry_value` varchar(255) NOT NULL,`update_time` datetime DEFAULT NULL,PRIMARY KEY (`id`),KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 ROW_FROMAT=DYnamic;

现在就可以不报错了!!!! 

一招解决MySql Specified key was too long; max key length is 767 bytes相关推荐

  1. mysql 报错 Specified key was too long; max key length is 767 bytes,开启系统变量:innodb_large_prefix

    mysql 报错 Specified key was too long; max key length is 767 bytes 当mysql数据库的字符集使用了utf8mb4,就很容易在执行建表sq ...

  2. mysql导入报错1071_导入sql文件报错:1071 Specified key was too long; max key length is 767 bytes...

    一.背景 今天把服务器的数据库导出了一份sql文件,准备导入到本地,但是在导入的时候,报了个错: Syntax error or access violation: 1071 Specified ke ...

  3. MySQL5.6建索引时遇到 Specified key was too long; max key length is 767 bytes错误提示解决办法

    一.错误提示 Specified key was too long; max key length is 767 bytes: 二.原因分析 在数据库中,索引的字段设置太长了,导致不支持.[根本原因: ...

  4. mysql索引长度超过767bytes问题解决。Specified key was too long; max key length is 767 bytes

    mysql索引长度超过767bytes问题解决.   错误信息: Specified key was too long; max key length is 767 bytes MySQL的InnoD ...

  5. mysql导入报错1071_mysql报错:Specified key was too long; max key length is 767 bytes | 吴老二...

    最近部署的mysql服务,在导入数据后,查询数据时提示:ERROR 1071 (42000) : Specified key was too long; max key length is 767 b ...

  6. Mysql报错:Specified key was too long; max key length is 767 bytes

    在执行mysql脚本时,报错:Specified key was too long; max key length is 767 bytes. 解决办法: 一.修改mysql的字符集为uft8 再次执 ...

  7. sqlalchemy Specified key was too long; max key length is 767 bytes的解决办法

    sqlalchemy出现以下错误: sqlalchemy Specified key was too long; max key length is 767 bytes 原因 字符集设成了utf8mb ...

  8. Hive集成Mysql作为元数据时,提示错误:Specified key was too long; max key length is 767 bytes...

    在进行Hive集成Mysql作为元数据过程中.做全然部安装配置工作后.进入到hive模式,运行show databases.运行正常,接着运行show tables:时却报错. 关键错误信息例如以下: ...

  9. mysql 767 bytes_max key length is 767 bytes

    Specified key was too long;max key length is 767 bytes https://blog.csdn.net/gladyoucame/article/det ...

最新文章

  1. plsql连接oracle无响应,求教 pl/sql连接本机数据库是未响应问题
  2. Chrome web 开发用到的插件
  3. 用 Redis 处理 jsonwebtoken 生成的 Token
  4. 轴自定义图标_9种吸引人的图标样式,能给你的设计带来良好的用户体验
  5. cas跨域单点登录原理_CAS实现SSO单点登录原理
  6. ubuntu mysql自动备份_Ubuntu下mysql数据库自动备份脚本
  7. Knative 基本功能深入剖析:Knative Serving 之服务路由管理
  8. JAVA的extends使用方法
  9. mysql数据库,当数据类型是float时,查询居然查询不出数据来
  10. 超炫酷的HTML5视频播放器 支持手机移动页面
  11. NavigatorContent使用皮肤
  12. Python之turtle画小狗、狮子头和小黄人
  13. 《团队作业第三、第四周》五小福团队作业--Scrum 冲刺阶段--Day1--领航
  14. 《power BI 视频7》六合一图表案例
  15. ns3网络设置模块 PointToPoint
  16. 纯原生js自定义弹窗
  17. 微机原理8086——8251A串口芯片protues仿真
  18. 论文阅读——Towards Adversarially Robust Object Detection
  19. linux系统键盘关机快捷键,Linux三种关机/重启系统的命令
  20. iOS AudioQueue实现音频的录制和播放(附Demo)

热门文章

  1. [C语言]口令比较填空:阅读程序,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。 下面程序比较用户键盘输入的口令userInput与内设的口令password是否相同。若相同,
  2. FFmpeg解码视频并保存为图片
  3. Sphinx (Sphinx(斯芬克司))
  4. 大争之世智造为基,瑞科智能将亮相第21届SIMM深圳机械展
  5. oracle opm系统,ORACLE EBS OPM标准功能培训资料-OPM库存-V1.0
  6. python获得用户输入的一段文字将这段文字进行垂直输出_Python练习题2020
  7. 手把手教你系列 - Particle粒子特效(完整代码部分)
  8. 用python解决数据结构与算法_python中各种数据结构与算法的解决技巧
  9. 实战:Traefik 高级配置2-2022.1.18
  10. 机器语言-汇编语言-高级语言各自优缺点