java - 如何使用 JPA 以编程方式创建长度有限的 MySQL 索引?

标签 java mysql spring jpa

类似于here我正在用

注释我的类(class)
@Table(indexes = {@Index(columnList = "name")}) 

它试图创建一个具有 varchar 列最大长度的非唯一索引。不幸的是,这是不可能的,因为它是 utf8mb4 类型的 varchar(255) 列。 phpMyAdmin 通过单击 UI 中的相应按钮添加了 KEY '...' (name(191)),因此至少我的软件现在运行高效查询。

现在我想知道是否可以让我的 Java 类在创建数据库模式时自动生成长度有限的索引?该代码基于 spring-boot-starter-data-jpa:1.4.2.RELEASE

最佳答案

除了尝试让第 3 方软件做一些它可能允许或不允许的事情之外,还有其他答案。

  • 忍受 191 列大小的限制。或者,您真的有 191 到 255 之间的最大值吗?
  • 更改为 utf8(从 utf8mb4)。并失去存储表情符号和一些汉字的能力。
  • 5.6 中有一个笨拙的过程来提高您遇到的 767 限制。
  • 升级到 5.7,这几乎消除了问题。

关于java - 如何使用 JPA 以编程方式创建长度有限的 MySQL 索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42365149/

相关文章:

java - 考虑重复,在数组中存储随机值

mysql - 从日期时间查找连续条纹的最大值和当前条纹

java - Spring - 将每个 url 映射的参数发送到同一过滤器

java - JPA查询具有多对多关系的多个表

java - Java 中的四舍五入?

java - 创建只有一个段的 Lucene 索引

mysql - 如何显示 MySQL 中不超过一天的行?

mysql - 如何计算mysql查询中的平均值?

java - 通过创建 REST 端点使用 spring-boot 发送电子邮件

java - Android:java.lang.IllegalStateException:适配器的内容已更改但ListView未收到通知