安装EOS Platform 7.6,遇到Init DB failed![Specified key was too long; max key length is 767 bytes]解决办法

今天早上,入职前提前了解公司EOS开发工具及开发模式,安装EOS Platform 7.6,出现了这个问题。

Init DB failed![Specified key was too long; max key length is 767 bytes[CREATE INDEX IDX_WFWI_PARTICI ON WFWORKITEM( PARTICIPANT )]
Specified key was too long; max key length is 767 bytes[CREATE INDEX WTRI_EXPAT ON WFTASKRESOURCEINFO(EXCLUDEUNIQUEID)]
Specified key was too long; max key length is 767 bytes[CREATE INDEX WTRI_COMP ON WFTASKRESOURCEINFO(QUEUENAME,STATUS,SERVERID)]
]
-- 重试选择‘是’,退出安装选择‘否’

通过网络查询,终于找到原因,感谢。
如果启用了系统变量innodb_large_prefix(默认启用,我电脑安装版本为MySQL 5.6.41,默认是关闭的,MySQL 5.7默认开启),则对于使用DYNAMIC或COMPRESSED行格式的InnoDB表,索引键前缀限制为3072字节。如果禁用innodb_large_prefix,则对于任何行格式的表,索引键前缀限制为767字节。

innodb_large_prefix将在以后的版本中删除、弃用。在MySQL 5.5中引入了innodb_large_prefix,用来禁用大型前缀索引,以便与不支持大索引键前缀的早期版本的InnoDB兼容。

对于使用REDUNDANT或COMPACT行格式的InnoDB表,索引键前缀长度限制为767字节。例如,您可能会在TEXT或VARCHAR列上使用超过255个字符的列前缀索引达到此限制,假设为utf8mb3字符集,并且每个字符最多包含3个字节。

尝试使用超出限制的索引键前缀长度会返回错误。要避免复制配置中出现此类错误,请避免在主服务器上启用enableinnodb_large_prefix(如果无法在从服务器上启用)。

适用于索引键前缀的限制也适用于全列索引键。

注意:上面是767个字节,而不是字符,具体到字符数量,这就跟字符集有关。GBK是双字节的,UTF-8是三字节的

解决方案:

1:启用系统变量innodb_large_prefix
注意:光有这个系统变量开启是不够的。必须满足下面几个条件:

1: 系统变量innodb_large_prefix为ON

2: 系统变量innodb_file_format为Barracuda

3: ROW_FORMAT为DYNAMIC或COMPRESSED
mysql> show variables like '%innodb_large_prefix%';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| innodb_large_prefix | OFF   |
+---------------------+-------+
1 row in set (0.00 sec)

mysql> set global innodb_large_prefix=on;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show variables like '%innodb_file_format%';
+--------------------------+----------+
| Variable_name            | Value    |
+--------------------------+----------+
| innodb_file_format       | Antelope |
| innodb_file_format_check | ON       |
| innodb_file_format_max   | Antelope |
+--------------------------+----------+
3 rows in set (0.00 sec)

mysql> set global innodb_file_format=Barracuda;
Query OK, 0 rows affected (0.00 sec)

mysql> set global innodb_file_format_max=BARRACUDA;
Query OK, 0 rows affected (0.01 sec)

完成上面操作之后,并成功安装EOS Platform 7.6。
在这里插入图片描述

引用:Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes 。 引用:【[Err] 1071 - Specified key was too longmax key length is 767 bytes,【各版本mysql均已解决】】http://t.csdn.*** was too longmax key length is 767 bytes 二、分析: 。 问题:请告诉我,sql错误1071Specified key was too long; max key length is 767 bytes SQL错误1071 "Specified key was too long; max key length is 767 bytes" 是由于在MySQL数据库中创建或修改表时,指定的键的长度超过了最大限制引起的错误。最大键长度限制在767字节。这个问题可以在各个版本的MySQL中解决。 为了解决这个问题,你可以采取以下几种方法之一: 1. 缩短键的长度: 可以通过减少键的长度来解决这个问题。你可以检查表的每个键,并尝试减少键的长度,使其不超过767字节。 2. 使用不同的字符集和排序规则: 有时候,如果你在创建表时使用了特定的字符集和排序规则,会导致键的长度变长。你可以尝试使用不同的字符集和排序规则,以确保键的长度在限制范围内。 3. 使用前缀索引: 如果键的长度依然超过限制,你可以考虑使用前缀索引。前缀索引只使用键的一部分作为索引,从而减少了键的长度。 4. 升级MySQL版本: 如果你使用的是较旧的MySQL版本,你可以尝试升级到最新版本。最新版本的MySQL通常会解决一些旧版本中存在的限制和问题。 综上所述,SQL错误1071 "Specified key was too long; max key length is 767 bytes" 是由于键的长度超过了MySQL的最大限制引起的。你可以通过缩短键的长度、使用不同的字符集和排序规则、使用前缀索引或升级MySQL版本来解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [导入sql文件报错:1071 Specified key was too long; max key length is 767 bytes](https://blog.csdn.net/weixin_39841572/article/details/113251789)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【数据库】[Err] 1071 - Specified key was too longmax key length is 767 bytes](https://blog.csdn.net/weixin_53791978/article/details/128857775)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值