【问题标题】:mysql 5.7 - Specified key was too long; max key length is 3072 bytesmysql 5.7 - 指定的密钥太长;最大密钥长度为 3072 字节
【发布时间】:2017-02-25 16:18:43
【问题描述】:

我的一个 talbe 有一个多列索引,总共 1011 个字符。 存储引擎是 InnoDB。

同一张表在 mysql 5.6.26 中运行良好。但是现在当我升级到 mysql 5.7.16 时出现错误 Specified key is too long;最大密钥长度为 3072 字节

我知道索引的总大小有限制。但问题是,为什么它在 5.6 中工作而在 5.7 中停止工作。在不减少列大小的情况下我可以做些什么吗?

【问题讨论】:

标签: mysql


【解决方案1】:

我们的问题是默认字符集。在旧的 5.6 版本中,我的默认字符集是 latin1,但是当我安装 5.7.16 时,我没有更改字符集并且默认为 utf8,这导致更大的列大小,因为 utf 占用更多字节,从而导致错误。将默认字符集更改回 latin1 并重新创建表解决了问题。

[mysqld]
character-set-server=latin1

[client]
default-character-set=latin1

[mysql]
default-character-set=latin1

【讨论】:

  • 如果这是您问题的最终解决方案,您应该接受自己的答案作为正确答案。
猜你喜欢
  • 1970-01-01
  • 2019-03-21
  • 2016-10-04
  • 1970-01-01
  • 2016-04-15
  • 2010-11-05
  • 2011-09-03
  • 2012-05-31
  • 2017-11-23
相关资源
最近更新 更多