【问题标题】:Spring Boot & Hibernate: MySQL TEXT with local h2 and FlywaySpring Boot & Hibernate:带有本地 h2 和 Flyway 的 MySQL TEXT
【发布时间】:2020-02-02 00:25:56
【问题描述】:

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

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

实体可能具有以下属性

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

对于我的 MySQL 数据库,这可以正常工作,并且在我的 flyway 架构中看起来像这样:

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 但实际上我不知道如何解决这个问题。

感谢任何帮助。

谢谢。

【问题讨论】:

    标签: mysql spring h2 flyway


    【解决方案1】:

    我找到了解决方法。 在我的 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}

    【讨论】:

      猜你喜欢
      • 2019-03-03
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 2021-05-29
      • 2017-02-20
      • 2019-11-22
      相关资源
      最近更新 更多