Mysql之Specified key was too long; max key length is xx bytes异常

news2024/12/24 2:09:00

问题原因:mysq索引的字段都太长了

767字节是 MySQL 版本5.6(以及以前版本)中 InnoDB 表的最大索引前缀长度限制,MyISAM 表的长度为1,000字节。在 MySQL 版本5.7及以上版本中,这个限制增加到了3072字节。

如果对 utf8mb4编码的 varchar 字段设置索引,因为utf8mb4编码每个字符占4个字节,所以必须将最大索引前缀长度767字节(或3072字节)除以4,得到191,这是字段的最大字符长度。如果是 utf8 编码,它将是三个字节,最大索引前缀长度为255。

解决办法:让mysql支持比较长的索引,然后在插入表的时候,添加ROW_FORMAT=DYNAMIC ,自动格式化索引。

对于MySQL版本5.6(以及以前版本),如果设置为InnoDB、utf8mb4编码,那么 varchar 类型的字段要想设置索引,则字段长度必须小于等于 191;如果为utf8编码,varchar 字段要想设置索引,字段长度必须小于等于 255

5.7及以上版本中这个数变大了,对于 varchar 类型建立索引一般没有影响了,因为一般我们不会设置太大的varchar类型字段。

出现此类问题的原因都是在于InnoDB 表引擎的限制,默认情况下,索引前缀长度限制为 767 字节,当开启了 innodb_large_prefix 选项时,索引前缀长度扩展到 3072 字节。

show variables like '%innodb_large_prefix%';

除此之外,索引前缀长度还和 InnoDB 的 page size 有关。innodb_page_size 选项默认是 16KB 的时候,最长索引前缀长度是 3072 字节,如果是 8KB 的时候,最长索引前缀长度是 1536 字节,
默认是3KB的时候,是1024字节,默认是4KB 的时候,是 768 字节。

show variables like '%innodb_page_size%';

解决方案:

--修改最大索引长度限制
set global innodb_large_prefix=1;
set global innodb_file_format=BARRACUDA;
-- 添加
set global innodb_file_format_max=BARRACUDA;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1320240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python+torch线性回归模型机器学习

程序示例精选 pythontorch线性回归模型机器学习 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《pythontorch线性回归模型机器学习》编写代码,代码整洁,规则&#xf…

【操作系统】实验四 进程调度

实验名称: 实验四 进程调度 实验目的: 1. 加深理解有关进程控制块、进程队列的概念 2. 体会和了解优先级和时间片轮转调度算法的具体实施办法 实验内容: 1. 设计进程控制块 PCB 表结构(与实验一的结构相同)&#xff…

超详细整理,Java接口自动化测试实战-rest-assured

1、关于rest-assured rest-assured 是一个能够简化测试rest服务的Java DSL,像ruby或者python一样的动态语言去测试和验证http服务。 基于java并且兼容了groovy动态语言的特性,使我们像写脚本语言一样去测试http服务。 例如:你的http服务&a…

范仲淹:文能治盛世,武可镇山河

北宋景佑元年(公元1034)年,范仲淹回乡祭拜范氏宗祠。在苏州祖宅住了几天后,范仲淹决定在苏州南园旁边买一块地,在此处盖一处房屋,待老迈时回乡居住。 按照家乡的风俗,在破土动工之前&#xff0c…

Note3---初阶二叉树~~

目录​​​​​​​ 前言🍄 1.树概念及结构☎️ 1.1 树的概念🎄 1.2 树的相关概念🦜 1.2.1 部分概念的加深理解🐾 1.2.2 树与非树🪴 1.3 树的表示🎋 1.4 树在实际中的运用(表示文件系统…

软件试运行整体方案

一、 试运行目的 (一) 系统功能、性能与稳定性考核 (二) 系统在各种环境和工况条件下的工作稳定性和可靠性 (三) 检验系统实际应用效果和应用功能的完善 (四) 健全系统运行管理体…

Hadoop和Spark的区别

Hadoop 表达能力有限。磁盘IO开销大,延迟度高。任务和任务之间的衔接涉及IO开销。前一个任务完成之前其他任务无法完成,难以胜任复杂、多阶段的计算任务。 Spark Spark模型是对Mapreduce模型的改进,可以说没有HDFS、Mapreduce就没有Spark。…

架构简洁之道有感,谈谈软件组件聚合的张力

配图由腾讯混元助手生成 这篇文章介绍了软件架构设计中组件设计思想,围绕“组件间聚合的张力”这个有意思的角度,介绍了概念,并且结合架构设计示例对这个概念进行了进一步阐述。 组件聚合?张力?这标题,有种…

两位技术领导者的故事——英特尔和高通

对于科技行业来说,包括这样一个现实:上学、工作和娱乐实际上是未来生活的一部分。科技行业也面临着变革,行业内发生了几起重大收购和管理层变动。其中两个最具影响力的变化是英特尔和高通的换岗。具有讽刺意味的是,这两家公司在过…

UGUI 鼠标悬浮UI出现弹框,鼠标在图片边缘出现闪烁

1、背景:鼠标悬浮在UI上出现提示框 public class SpecialParam_list : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler {public void OnPointerEnter(PointerEventData eventData){TipBox.Instance.ShowBox(Input.mousePosition, value);}public void …

改进灰狼算法求解:考虑需求响应的风-光柴-储容量优化配置

目录 文章摘要: 亮点: 研究背景: 考虑需求相应的容量配置: 风、光、柴、储微电网模型: 储能配置模型: 改进的灰狼算法: 基于余弦规律变化的收敛因子 引入动态权重策略 运行效果&#…

长尾问题之LDAM

做法&代码&公式 step1: 全连接层的权重W和特征向量X都归一化,相乘 W * X P (得到各个类别的概率) # 定义权重,初始化 weight nn.Parameter(torch.FloatTensor(num_classes, num_features)) weight.data.uniform_(-1, 1).renorm_(2, 1, 1e-5).mul_(1e5)#…

初识迭代器(Iterator)——迭代器模式——迭代加深(后续更新...)

学习网页: Welcome to Python.orghttps://www.python.org/ 迭代器(Iterator) 迭代器是一个非常有用的Python特性,它允许我们遍历一个容器(如列表、元组、字典、集合等)的元素。迭代器提供了一种方法&…

02什么是CPU上下文切换

上⼀节, 讲了要怎么理解平均负载( Load Average) , 并⽤三个案例展示了不同场景下平均负载升⾼的分析⽅法。 这其中, 多个进程竞争 CPU 就是⼀个经常被我们忽视的问题。 1、CPU上下文切换的概念 我想你⼀定很好奇&am…

软件开发人员,参加各种行业技术大会有意义么?

参加行业技术大会对于软件开发人员来说,是一个获取新知识、拓展视野、结交同行的宝贵机会。 1、知识更新:技术大会通常涵盖最新的技术趋势和工具。对于软件开发人员来说,这是了解新技术并将其应用到日常工作中的好机会。 2、拓宽视野&#x…

遥测终端机RTU如何选型和配置?

随着物联网技术的不断发展,遥测终端机RTU在各个领域的应用越来越广泛。RTU作为数据采集、传输和处理的核心设备,对于确保数据的准确性和稳定性至关重要。那么,如何选型与配置遥测终端机RTU呢?本文将为您揭秘RTU的选型与配置技巧&a…

【ros2 control 机器人驱动开发】简单双关节机器人学习-example 1

【ros2 control 机器人驱动开发】简单双关节机器人学习-example 1 文章目录 前言一、RR机器人创建description pkg创建demos pkg 二、创建controller相关创建example pkg 三、测试运行总结 前言 本系列文件主要有以下目标和内容: 为系统、传感器和执行器创建 Har…

HTML中边框样式、内外边距、盒子模型尺寸计算(附代码图文示例)【详解】

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍HTML中边框样式、内外边距、盒子模型尺寸计算以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学习记录获,友友们有任何问…

简单描述从输入网址到页面显示的过程

当用户输入网址并按下回车键后,浏览器会进行以下步骤: DNS 解析:浏览器会解析网址中的域名部分,提取出需要访问的目标域名。然后,它会向本地 DNS 服务器发送一个 DNS 查询请求,以获取该域名对应的 IP 地址。…

Trie 字典树(c++)(前缀)

题目链接:用户登录 题目: 样例: 输入 5 3 aaa aba aabbaa abbbbb cdd aabba abc abab 输出 Y N N 思路: 根据题目意思,要用到 Trie 字典树算法。 Trie 字典树,顾名思义,“字典”&#xff0…