`
frank1998819
  • 浏览: 758292 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

Specified key was too long; max key length is 767 bytes(转)

 
阅读更多

今天生产上遇到上述的bug:

 

       系统变量innodb_large_prefix开启了,则对于使用DYNAMIC或COMPRESSED行格式的InnoDB表,索引键前缀限制为3072字节。如果禁用innodb_large_prefix,不管是什么表,索引键前缀限制为767字节。

 

       上述的bug很明显是索引超出了限制的长度767(我司生产上innodb_large_prefix禁用了):

 

       我发现报错的那张表建立了一个varchar类型的索引,varchar(255),觉得没什么问题,其实不然,上述的767是字节,而varchar类型是字符,同时我发现我使用的字符集为(utf8mb4),这个指每个字符最大的字节数为4,所以很明显 4*255 > 767

 

所以就报上述错了(Specified key was too long; max key length is 767 bytes)。

 

       解决方法:

 

       改变varchar的字符数,我改成了64就可以了。varchar(64)

 

       或者启用innodb_large_prefix,那么限制值会增加到3072

 

点赞 8

————————————————

版权声明:本文为CSDN博主「异世界的造物主」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/chenjianhuideyueding/java/article/details/88426021

分享到:
评论

相关推荐

    MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办法

    max key length is 1000 bytes”。这个错误意味着你试图创建的索引键(key)超过了MySQL允许的最大长度。MySQL对每个表的每个索引都有一个最大长度限制,通常是1000字节。这个限制包括了所有被索引字段的长度。 在...

    mysql建库时提示Specified key was too long max key length is 1000 bytes的问题的解决方法

    ### MySQL建库时提示“Specified key was too long; max key length is 1000 bytes”的问题解析及解决方法 #### 问题背景 在使用MySQL进行数据库表结构设计时,可能会遇到“Specified key was too long; max key ...

    nacos-server-1.1.4.txt

    nacos-server-1.1.4 windows下的运行程序 springcloud alibaba

    用sql命令修改数据表中的一个字段为非空(not null)的语句

    ALTER TABLE table1 ALTER COLUMN ... 您可能感兴趣的文章:sql server建库、建表、建约束技巧mysql建库时提示Specified key was too long max key length is 1000 bytes的问题的解决方法Mysql 建库建表技巧分享SQL S

    解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]

    Illuminate\Database\QueryException : ... max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`)) 以上报错是因为你的数据库版本低于当前laravel要求,larave

    nacos-server-1.2.0.zip

    max key length is 767 bytes 解决方案1: 直接缩短到255长度 解决方案2: 修改数据库配置, set innodb_large_prefix=on 吐槽一下, 1.2.0版本比1.1.4版本多创建一个数据表, 为甚么前面的sql有引擎,有...

    Bugfree3.0.4安装部署说明书

    - 如果在安装过程中遇到“Specified key was too long: max key length is 767 bytes”的错误,需要修改`\Apache2.2\htdocs\bugfree\install\schema.php`文件中的相关字段长度。 通过以上步骤,你应该能够成功地在...

    Joomla网站中数据导入导出问题

    - **错误原因**:在导入前,可能会遇到“Specified key was too long; max key length is 1000 bytes”的错误。这是由于MySQL的限制导致的。 - **解决方法**: 1. 打开导出的SQL文件,查找并定位到以下两行: ``` ...

    laravel执行php artisan migrate报错的解决方法

    max key length is 767 bytes ``` 这个错误通常发生在创建或修改具有较大数据长度的索引时,尤其是在使用了InnoDB引擎的情况下。InnoDB存储引擎对索引的长度有限制,最大值为767字节。这个限制取决于MySQL的配置,...

    解决在laravel中auth建立时候遇到的问题

    max key length is 767 bytes。这个错误通常发生在为字段创建索引时,特别是当MySQL版本低于5.7.7或MariaDB版本低于10.2.2时。因为Laravel默认使用utf8mb4编码,它支持的表情字符会消耗更多的字节,从而可能超过...

    BobBuilder_app

    String Keys are UTF8 encoded and limited to 60 bytes if not specified otherwise (maximum is 255 chars). Support for long string Keys with the RaptorDBString class. Duplicate keys are stored as a WAH ...

    在EF中使用MySQL的方法及常见问题

    由于MySQL对字符串类型的默认映射可能导致键长度超出限制,所以在定义`UserName`和`PassWord`时,需要使用`StringLength`和`MaxLength`数据注解来限制其长度,避免出现“Specified key was too long; max key length...

    php.ini-development

    On production servers, 4096 bytes is a good setting for performance ; reasons. ; Note: Output buffering can also be controlled via Output Buffering Control ; functions. ; Possible Values: ; On = ...

    Bochs - The cross platform IA-32 (x86) emulator

    - When x86-64 support is compiled in, you could enable/disable long mode 1G pages support without recompile using new CPUID option in .bochsrc. Configure options: --enable-mmx, --enable-sse, --...

Global site tag (gtag.js) - Google Analytics