Spring 启动和休眠:MySQL TEXT with local h2 and Flyway

Spring Boot & Hibernate: MySQL TEXT with local h2 and Flyway

我正在构建一个 Spring 启动应用程序,它的实体中有几个长文本。

为了确保我可以很好地处理数据库迁移,我加入了 Flyway。在生产中,我使用的是 MySQL 数据库,对于本地测试,我想实现默认的 h2 数据库。

实体可能具有以下 属性

@Column(columnDefinition = "TEXT")
val startText: String?

对于我的 MySQL 数据库,这工作正常并且在我的飞路模式中看起来像这样:

start_text TEXT,

当我现在使用 Spring 中的默认 h2 内存数据库开始我的测试时,我收到以下错误:

Schema-validation: wrong column type encountered in column [start_text] in table [t_table]; found [clob (Types#CLOB)], but expecting [text (Types#VARCHAR)]

我知道 h2 不支持 MySQL 特定类型 TEXT 但实际上我不知道如何解决这个问题。

感谢任何帮助。

谢谢。

我找到了解决方法。 在我的 application.yaml 中,我有以下内容:

spring:
  flyway:
    placeholders:
      text-datatype: 'TEXT' #defines a placeholder that is available in flyway

在我的 application.yaml 测试文件夹中,我有以下内容

spring:
  flyway:
    placeholders:
      text-datatype: 'VARCHAR(255)'

现在我可以在我的 Flyway 脚本中使用占位符并且它工作正常:

start_text ${text-datatype}