首页 > 其他分享 >Specified key was too long; max key length is 767 bytes错误的原因

Specified key was too long; max key length is 767 bytes错误的原因

时间:2022-09-25 20:23:49浏览次数:77  
标签:utf8mb4 max bytes 767 long too key

mysql数据库里某个UNIQUE唯一索引字段从utf8改为utf8mb4时提示1071 - Specified key was too long; max key length is 767 bytes,来看看这个错误的来原因。

来几个知识点

  • 一个字符latin1占用1 bytesutf8占用3 bytes,而utf8mb4占用4 bytes
  • mysql5.6以及以前的版本的InnoDB引擎的表限制索引最多占用767 bytes;而MyISAM的是最长1000 bytes
  • mysql5.7版本开始这个限制提升到3072 bytesUTF8可以达到VARCHAR(1024)

所以当你的唯一索引字段在mysql5.6或更早的版本时(引擎为InnoDB),utf8mb4字符串最长能到VARCHAR(191)(1914=764),utf8可以到VARCHAR(255)(255·3=765)。如果你从不指定长度直接使用utf8mb4字段做唯一索引,就会报Specified key was too long; max key length is 767 bytes错误,因为计算默认字符串默认长度时是255。

这个问题在Laravel中就有可能发生,为了存储emoji它默认使用utf8mb4,如果你的mysql版本低于5.7,需要注意上面的情况.

参考:https://beltxman.com/2297.html

标签:utf8mb4,max,bytes,767,long,too,key
From: https://www.cnblogs.com/javaxubo/p/16728695.html

相关文章

  • 【Redis】Key过期了为什么内存没有释放
    SET除了可以设置key-value之外,还可以设置key的过期时间。  如果想要修改key的值,使用set命令,而没有加上过期时间的参数,那么这个key的过期时间将会被擦除。......
  • Longest Subarray With Maximum Bitwise AND
    LongestSubarrayWithMaximumBitwiseANDYouaregivenanintegerarray nums ofsize$n$.Consideranon-emptysubarrayfrom nums thathasthemaximumpos......
  • C语言max宏的进化
    C语言max宏的进化lv1:shit#defineMAX(a,b)a>b?a:b问题所在不必多言lv2:角度:参数也可为expr解:#defineMAX(a,b)(a)>(b)?(a):(b)bug示例:#i......
  • KeyShot Pro 11入门:如何选择环境渲染图像
    KeyShotPro11可以让您在几分钟内渲染图像。通过提供许多高级功能和即时实时反馈的简单界面,您可以在专注于设计的同时节省时间。下面为您带来了KeyShotPro11入门,只要讲......
  • aardio + AutoHotkey 混合编程
    本文主要介绍aardio+AutoHotkey混合编程。在aardio中可以调用很多编程语言,例如C语言、C++、C#、Java、Python、R、Javascript、Node.Js、Fortran、VB、FlashActio......
  • 在递增的链表中删除min到max之间的所有元素
    在递增的链表中删除min到max之间的所有元素存在一个递增的链表,其中相邻两个结点的数据域的值要么相等,要么就是后面的大于前面的,对该表进行删除值属于(min,max)包括min和m......
  • BM93,BM94接雨水问题(最大水量maxArea和总水量trapWater问题)(双指针)
    总水量问题BM94trapWater()描述给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个柱子高度图,计算按此排列的柱子,下雨之后能接多少雨水。(数组以外的......
  • Maximum and Minimum values for ints Python
    https://docs.python.org/3/library/sys.html#sys.int_infosys.int_infoAnamedtuplethatholdsinformationaboutPython’sinternalrepresentationofintegers......
  • Adaptive Sampled Softmax with Kernel Based Sampling
    目录概符号说明Motivation本文的方法Kernel的选择BlancG.andRendleS.Adaptivesampledsoftmaxwithkernelbasedsampling.InInternationalConferenceonMac......
  • APP测试 - Monkey测试时禁止下拉状态栏
    Monkey测试,随机点击。会下拉状态栏,关闭WiFi,打开GPS,打开蓝牙,打开飞行模式等一系列操作,严重干扰程序的测试,尤其是对网络状态下的耗电量测试。下面的命令可以禁止Monkey测......