【问题标题】:Spring data causing MySQL max key length exceeded导致 MySQL 最大密钥长度超出的 Spring 数据
【发布时间】:2018-06-21 06:14:24
【问题描述】:

我有以下代码段(由 Spring Data / Eclipselink 生成)

    CREATE TABLE abnormal_flags (ID BIGINT NOT NULL, code VARCHAR(255) NOT NULL 
UNIQUE, created DATETIME NOT NULL, description VARCHAR(255) NOT NULL, uuid 
LONGBLOB NOT NULL UNIQUE, PRIMARY KEY (ID));

使用 MySQL 会产生以下结果:

ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

这是连接字符串:

jdbc:mysql://localhost/mynewdb?
useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false
&serverTimezone=UTC

我之前已经看到并解决了这个问题,但是在这种情况下我无法看到问题出在哪里?是因为 uuid 已转换为 longblob 吗?我不明白为什么这会是一个问题,因为它不是关键?

我删除了对 uuid 的唯一约束,结果相同

如果我是大脑衰退的受害者,我深表歉意!

【问题讨论】:

  • 改用varchar(191)
  • 对于 uuid 字段?由于 unicode?​​span>
  • 不,代码和描述
  • 所以我认为这是由于将默认字符集更改为 utf8mb4 造成的?以及对独特受限字段的更多存储的相应要求?也许您将其添加到答案中,我可以分配学分-谢谢!

标签: mysql spring-data-jpa eclipselink


【解决方案1】:

ERROR 1071 (42000):指定的密钥太长;最大密钥长度为 767 字节

上面的异常很清楚,你已经达到了极限。

varchar(255) 更改为低于255 的值,例如varchar(191)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 2016-10-04
    • 2017-11-23
    • 2017-02-01
    • 2012-06-03
    • 1970-01-01
    • 2017-04-30
    相关资源
    最近更新 更多