Mysql使用中遇到的错误

Mysql使用中遇到的错误,第1张

Mysql使用中遇到的错误

在使用mysql的时候经常遇到各种问题,之前都是每次遇到查询一下网上的解决方案解决掉,但是下次再遇到还是记不住,需要重新百度解决,今天又遇到了一个问题,顺便记录下来方便以后查阅,这篇文章会不断进行更新,记录我使用mysql过程中遇到的问题,各位小伙伴如果有遇到奇怪的问题,欢迎留言,我一起整理一下,方便大家查阅,各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!

目录

问题一

ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes 或者 Index column size too large. The maximum column size is 767 bytes

场景

原因

解决


问题一 ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes 或者 Index column size too large. The maximum column size is 767 bytes 场景

我的建表语句是这样的:

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_key`)
)  ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

问题一的错误意思就是索引字段长度太长,超过了767bytes。看了下我建表索引字段为VARCHAr(255),看起来没啥毛病,之前都是这么用的,为什么会报错呢?看下面: 

原因

mysql的索引只支持不超过767个字节或者768/2=384个双字节 或者767/3=255个三字节的字段 而GBK是双字节的,UTF8是三字节的。utf8mb4专门用来兼容四字节的unicode(每个字符最大的字节数为4)所以很明显 4*255 > 767,所以会报超长的错误。

解决

你可以降低一下字段的字符长度别超了767即可,比如使用VARCHAr(100),如果非要使用VARCHAr(255),那就看下面的解决方式:修改InnoDB的innodb_large_prefix,innodb_file_format参数。

-- 查看原值
SHOW VARIABLES LIKE 'innodb_large_prefix';
SHOW VARIABLES LIKE 'innodb_file_format';
-- 修改参数值
SET GLOBAL innodb_large_prefix=1;
SET GLOBAL innodb_file_format=BARRACUDA;

然后在建表的时候指定表的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_key`)
)ROW_FORMAT=DYNAMIC ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

 如果不指定row_format会报第二个错误:Index column size too large. The maximum column size is 767 bytes。

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

原文地址:https://outofmemory.cn/zaji/5637904.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

随机推荐

  • 马龙樊振东进四强,马龙樊振东进四强相关运动员

    7月28日,东京奥运会乒乓球男单14决赛正式打响,国乒世界第一、头号种子樊振东4比0横扫韩国选手郑荣植,成为了首位进入奥运男单四强的选手。在另外一场14决赛中,中国选手马龙大比分4比1战胜埃及选手阿萨尔,顺利晋级男单四强。樊振东是世界第

    2022-12-29
    2500
  • 什么是海外代购,香港代购怎么做才能赚钱

    身边越来越多人做起了代购,主要分为港代和海外代购两种。首先说下两者的共同点,都是通过人肉或者平台的方式代替顾客,去目的地把产品带回来。 港代和海外代购的区别。港代的话,顾客群体是确定的,大多是18~30岁的女性用户,以护肤和彩妆产品为

    2022-12-29
    2000
  • 台湾的特产有哪些

    台湾是我国的特别行政区,很多人喜欢到台湾游玩,既然要到台湾,那就一定要知道台湾有哪些特产,那么台湾的特产有哪些呢?台湾的特产有哪些1、冻顶乌龙茶:产地为台湾鹿谷乡凤凰村永隆村彰雅村(冻顶巷),茶区海拔约600-1000公尺,依以上三点为核心

    2022-12-29
    1700
  • 临沂兰山具体什么时候解封,临沂兰山封闭小区名单

    据悉,2022年10月25日0时至24时,临沂市新增7例新冠肺炎阳性感染者,经专家组诊断均为新冠肺炎无症状感染者。但临沂兰山疫情封控区什么时候解除?那么高速路口有没有封闭呢?临沂出入规定目前临沂兰山仍然还是有封闭小区名单,各位应要了解清楚啦

    2022-12-29
    2000
  • 车很少开也要半年去做保养吗(车子开的少也要半年保养吗)

    汽车一般是需要进行保养的,并不是不怎么开就不用保养了,如果车子放着一直不开,对车辆其实也是有损伤的。一般,汽车提示您该去做保养的时候,就应该去的,这样才能够让车辆的寿命更长。车很少开也要半年去做保养吗车很少开也是要半年去做保养的,因为在给汽

    2022-12-29
    1500
  • 干香菇长虫了还能吃吗 干香菇长虫子了还可以吃吗

    导读:干香菇长虫了还能吃吗?下面小编为大家整理介绍。1、干香菇长虫了一般不建议食用。长虫的干香菇可能受到虫卵、虫的粪便等物质污染,如果继续食用,有可能会引发胃肠道不适症1、干香菇长虫了一般不建议食用。长虫的干香菇可能受到虫卵、虫的粪便等物质

  • 世界上真的有ufo吗视频?那些发现ufo的事件

    美国重启UFO调查,疑发现非人类能制造的高科技,真有外星人?是的,美国又重启UFO调查了,并且宣称会在2022年的调查过程中,进入到一个全新的阶段中,这也不仅令人浮想联翩,好奇究竟美国发现了什么,会接连多次重启UFO调查。值得一提的是,除

    2022-12-29
    1100
  • 刘禹锡的乌衣巷位于什么地方_乌衣巷刘禹锡位于哪里

    想必您听过唐代大诗人刘禹锡的《金陵怀古乌衣巷》,那句“乌衣巷口夕阳斜”,您也一定非常熟悉,著名的乌衣巷便是位于江苏省南京市夫子庙景区文德桥的南岸,它是一条幽深僻静的巷子。当年三国时期这里是东吴戍守石头城部队营房的所在地,因为兵士多穿着黑色制

    2022-12-29
    1500
  • 小米12什么时候上市_小米12上市最新官方消息

    12 月 21 日消息,小米官方今日宣布,小米 12 系列将于 12 月 28 日晚 19: 30 正式发布。小米官方同步放出的海报显示,小米12系列代言人为明星运动员——苏炳添。根据爆料信息显示,小米 12 系列将包括 小米 12、小米

    2022-12-29
    1800

发表评论

登录后才能评论

评论列表(0条)

    保存