MySQL创建索引时提示“Specified key was too long; max key length is 767 bytes”

news2024/12/1 0:24:37

MySQL创建索引时提示“Specified key was too long; max key length is 767 bytes”

问题描述

数据库RDS MySQL版在创建表索引时,出现如下错误信息。

  • Error 1071: Specified key was too long; max key length is 767 bytes.
    
  • ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.
    

问题原因

  • 由于MySQL的InnoDB引擎表索引字段长度的限制为767字节,因此对多字节字符集的大字段或者多字段组合,在创建索引时会出现该问题。
  • 说明
  • 以utf8mb4字符集的字符串类型字段为例。utf8mb4是4个字节字符集,默认支持的索引字段最大长度是191字符(767字节/4字节每字符≈191字符),因此在varchar(255)或char(255)类型字段上创建索引会失败。详情请参见 MySQL官网文档。

解决方案

  • 请参考以下内容,将innodb_large_prefix参数值修改为ON,修改后对于Dynamic和Compressed格式的InnoDB引擎表,其支持的最大索引字段长度为3072字节:
  • 说明
  • 在MySQL 8.0中已经删除了innodb_large_prefix参数,您可通过调整数据表的Row_format值来解决,具体操作请参见第3步操作。
  1. 登录RDS控制台,选择目标地域,单击目标实例ID,单击参数设置,将innodb_large_prefix值修改为ON,单击确定,然后单击提交参数即可。innodb_large_prefix

  2. 登录数据库,执行以下SQL语句,确认innodb_large_prefix值为ON。

    show variables like 'innodb_large_prefix';
    

    系统显示类似如下。返回结果

  3. 配置Row Format。

    说明

    • 将innodb_large_prefix参数值修改为ON后,对于Dynamic和Compressed格式的InnoDB引擎表,其支持的最大索引字段长度为3072字节。

    • 只支持DYNAMIC和COMPRESSED格式的表,compact格式的表不支持。

    • 创建表时配置:指定表的Row Format为Dynamic或Compressed,示例如下。

      create table [$Table_Name] (id int auto_increment primary key, name varchar(255)) ROW_FORMAT=DYNAMIC default charset utf8mb4;
      

      说明 [$Table_Name]为表名。

    • 修改已有表配置:

      1. 执行以下SQL语句,查看Row_format取值,如果取值不是DYNAMIC和COMPRESSED,则执行后续步骤修改取值。

        show table status like '[$Table_Name]'\G
        

        系统显示类似如下。返回结果2

      2. 根据实际情况,执行其中一条SQL语句,修改Row_format值。

        alter table [$Table_Name] Row_format=dynamic;alter table [$Table_Name] Row_format=compressed;
        

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

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

相关文章

基于ESP32/ESP8266的单通道LoRaWAN网关设计-网页界面介绍

资料下载链接》》 网页界面介绍 对于单通道网关的第六版用户界面,我们专注于 Web 界面。本文档仅涉及 Web 界面。有几个部分要讨论: 用户界面说明web界面可以设置哪些参数单通道接口配置涉及的文件。 Web 界面的各个部分 启动 Web 界面时&#xff0…

【评测】腾讯云服务器的性能怎么样?

转载请注明出处:小锋学长生活大爆炸[ http://xfxuezhang.cn] 最近腾讯云推出了5年款服务器,性价比非常的高。但这么便宜的服务器,性能怎么样呢?学长特地领取了新人试用版测试了一下性能,这里与大家分享一下。 服务器领…

与对应负数同时存在的最大正整数

一、2441. 与对应负数同时存在的最大正整数 思路 这个题我想的是将数组中的负数全部找出来放进另一数组,然后再将原数组的元素与与之相比,如果相加等于0,那么就使num; 代码实现 int findMaxK(int* nums, int numsSize){int max0…

学系统集成项目管理工程师(中项)系列21b_整体管理(下)

1. 监控项目工作 1.1. 跟踪、审查和报告项目进展,以实现项目管理计划中确定的绩效目标的过程 1.2. 输入 1.2.1. 项目管理计划 1.2.2. 进度预测 1.2.2.1. 基于实际进展与进度基准的比较而计算出进度预测 1.2.2.1.1. 完工尚需时间估算(ETC) 1.2.2.1.2. 进度偏差(SV…

威胁报告检测到物理后果呈指数增长的OT网络攻击

2023年威胁报告 - 具有物理后果的 OT 网络攻击 在过去一年(2022 年),我们看到了 57 起针对工业系统的 OT 相关网络攻击,这些攻击在现实世界中造成了物理后果。这是我们在 2021 年看到的 22 次类似攻击的 2.5 倍多,是 …

网路通信-路由交换协议

目录 一、什么是协议 二、为什么要有协议 三、协议分类 (1)OSI通信模型 (2)tcp/ip通信模型 (3)数据传输的过程 1.传输路线 2.发送者封装数据 3.数据经过交换机 4.数据经过路由器 5.路由器转发到目…

深度学习环境配置系列文章(四):WSL2配置Windows11和Linux双系统

深度学习环境配置系列文章目录 第一章 专业名称和配置方案介绍 第二章 Anaconda配置Python和PyTorch 第三章 配置VS Code和Jupyter的Python环境 第四章 WSL2配置Windows11和Linux双系统 第五章 配置Docker深度学习开发环境 第四章文章目录 深度学习环境配置系列文章目录前言一…

横截面收益率(二) 阿尔法策略是如何构建的

资本资产定价模型自从首次被提出以来在金融经济学中一直处于中心地位。 在一系列简化假定条件下,资本资产定价模型表明,任何证券的收益率与该证券 的系统性风险(或者贝塔值)呈线性关系。因此,依据资本资产定价模型横截…

【STM32】基础知识 第十三课 中断

【STM32】基础知识 第十三课 中断 概述中断是什么中断的作用 & 意义STM32 中断体系NVIC中断向量表STM32 中断优先级基本概念 STM32 外部中断器 (EXTI)EXTI 简介EXTI 配置 AFIOAFIO 与中断 案例 概述 今天小白我将带领大家详细介绍 STM32 单片机中的中断处理机制, 包括中断…

Python每日一练(20230514) 不同路径 I\II\III UniquePaths

目录 1. 不同路径 I Unique Paths 1 2. 不同路径 II Unique Paths 2 3. 不同路径 III Unique Paths 3 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 不同路径 I Unique Paths 1 一个…

Java每日一练(20230514) 滑动窗、最大子序和、转罗马数字

目录 1. 滑动窗口最大值 🌟🌟 2. 最大子序和 🌟 3. 整数转罗马数字 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1.…

C/C++每日一练(20230514) 全排列、分数转小数、排序链表去重II

目录 1. 全排列 🌟🌟 2. 分数到小数 🌟🌟 3. 删除排序链表中的重复元素 II 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Ja…

【C++】unordered_map与unordered_set(系列关联式容器)

文章目录 1.unordered系列关联式容器2. unordered_map3.unordered_set 1.unordered系列关联式容器 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,如map和set,它们在查询时效率可达logN,即最差情况下需要比较红黑树的高度…

【UnavailableInvalidChannel: The channel is not accessible or is invalid.】

Collecting package metadata (current_repodata.json): failedUnavailableInvalidChannel: The channel is not accessible or is invalid.channel name: simplechannel url: http://pypi.douban.com/simpleerror code: 404.condarc以点开头,一般表示 conda 应用程…

前端016_文章管理模块_列表功能

文章管理模块_列表功能 1、需求分析2、Mock模拟接口数据3、Api调用接口4、列表模版6、分页查询7、条件查询1、需求分析 文章管理模块主要进行对文章的增删改查,一篇文章可以选择多个标签。 首先开发模块中的列表功能,包含数据列表、分页、查询。 2、Mock模拟接口数据 请求…

『MySQL 实战 45 讲』14 - count(*) 慢的根本原因

count(*) 慢的根本原因 count(*) 的实现方式 MyISAM 引擎会把一个表的总行数存在了磁盘上InnoDB 引擎需要把数据一行行读出,累计计数 为什么 InnoDB 不跟 MyISAM 一样,也把数字存起来呢 由于多版本并发控制的原因(和快照读有关系&#xf…

APP 兼容性测试是什么?8年测试老鸟告诉你

1、APP 兼容性测试认识 随着 APP 应用范围越来越广,用户群体越来越大,终端设备的型号也越来越多,移动终端碎片化加剧,使得 APP 兼容性测试成为测试质量保障必须要考虑的环节。 APP 兼容性测试通常会考虑:操作系统、厂…

Golang每日一练(leetDay0065)

目录 191. 位1的个数 Nnumber of 1-bits 🌟 192. 统计词频 Word Frequency 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 191. 位1的个数 Nnum…

《编程思维与实践》1070.复数幂

《编程思维与实践》1070.复数幂 题目 思路 思路比较简单,就是细节比较繁琐: ( a b i ) ( c d i ) ( a c − b d ) ( a d b c ) i (abi)(cdi)(ac-bd)(adbc)i (abi)(cdi)(ac−bd)(adbc)i , 利用该公式分实部和虚部进行计算结果即可. 由于涉及加减和正负号,所以在大整数结构…

MySQL的事务

1、事务的概念 事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。 事务是一个不可分割的工作逻辑单元&#xff…