【问题标题】:Liquibase generates type LONGBLOB in MySQL for BINARY(16) when moving to SpringBoot 1.3当迁移到 SpringBoot 1.3 时,Liquibase 在 MySQL 中为 BINARY(16) 生成类型 LONGBLOB
【发布时间】:2015-12-28 12:56:16
【问题描述】:

当我将 Springboot Web 应用从 1.2.6 版本迁移到 1.3.1 时,发生了一些非常意外的事情。

我正在使用 Liquibase 3.4.2 初始化我的数据库,并且在 XML 更改日志中声明为“BINARY(16)”的字段在数据库中创建为“LONGBLOB”(MySQL)。

字段的声明如下例所示:

 <createTable tableName="administrativeunit">
            <column name="id" type="BINARY(16)">
                <constraints nullable="false"/>
            </column>

我正在使用 MySQL 和 HSQLDB(应用程序同时支持这两种数据库),这两种情况都会发生。

奇怪的是,如果我将其移回 Spring-boot 1.2.6,这些字段将按预期声明 (BINARY(16))。

有人对如何覆盖此功能或使其工作有任何提示吗?

更新:这似乎是Springboot指向的liquibase版本的问题。在我的 pom.xml 中,liquibase 被声明为:

<dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
</dependency>

所以,当我升级到SpringBoot 1.3.1时,它自动加载了Liquibase 3.4.2,出现了上面提到的问题。所以我通过指定版本来强制我的 pom.xml 使用以前的版本,如下所示:

    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-core</artifactId>
        <version>3.3.5</version>
    </dependency>

我认为这是一种解决方法。可能是 Liquibase 中的一个错误,但 springboot 团队可以将 liquibase lib 引用到工作版本,而不是 3.4.2。

【问题讨论】:

  • 不要过多地看 Spring Boot,而是看在这个过程中升级的依赖项。 Hibernate 或 Liquibase 升级?
  • 其实我注意到springboot升级到1.3的时候,也会把liquibase升级到3.4.2。所以问题可能出在这个版本的 liquibase 中。我会更新我的答案
  • @StéphaneNic​​oll 我升级到 springboot 1.3.1 并强制我的 pom.xml 加载 liquibase 3.3.5(springboot 1.2.6 中引用的那个),现在它又可以工作了。我不知道它是在哪里完成的,但可能最好更改springboot引用的liquibase版本。以防万一。谢谢。
  • 我认为这不是一个合理的做法。如何在 liquibase 跟踪器上报告问题以更好地了解正在发生的事情?如果您想在某个时候升级,您可能会再次遇到同样的问题。 Spring Boot 不应隐藏该 IMO。
  • 这可能是您的问题吗? liquibase.jira.com/browse/CORE-2531

标签: spring-boot liquibase


【解决方案1】:

感谢 Stephane Nicoll 在他的 cmets 中,这是版本 3.4.2 中的一个错误:

http://liquibase.jira.com/browse/CORE-2531

因此,如果您在 SpringBoot 1.3.x 版本中遇到此错误,请强制您的应用程序使用以前版本的 Liquibase。就我而言,它适用于 3.3.5 版本,只需将以下更改添加到您的 pom.xml:

<dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
    <version>3.3.5</version>
</dependency>

【讨论】:

    猜你喜欢
    • 2022-11-23
    • 2021-11-11
    • 2023-01-13
    • 1970-01-01
    • 2019-07-30
    • 2017-09-29
    • 2012-09-24
    • 1970-01-01
    • 2012-04-21
    相关资源
    最近更新 更多