【问题标题】:SpringBoot's DataJpaTest with FlywaySpringBoot 的 DataJpaTest 与 Flyway
【发布时间】:2018-01-08 10:10:05
【问题描述】:

我在我的项目中使用 flyway 来设置数据库架构。当我尝试使用 @DataJpaTest 注释测试一些 JPA 层时,我在启动时收到此错误:

> Caused by:
> org.flywaydb.core.internal.command.DbMigrate$FlywayMigrateSqlException:
> Migration V1__init.sql failed
> ----------------------------- SQL State  : 42581 Error Code : -5581 Message    : unexpected token: AUTO_INCREMENT : line: 2 Location   :
> db/migration/V1__init.sql
> ..../target/classes/db/migration/V1__init.sql) Line       : 1
> Statement  : CREATE TABLE mytable (    id INT NOT NULL AUTO_INCREMENT
> PRIMARY KEY,

看起来它正在尝试使用 HSQL 而不是常规 SQL

有没有办法可以将 @DataJpaTest 与 flyway 一起使用?

【问题讨论】:

    标签: mysql testing spring-boot spring-data-jpa flyway


    【解决方案1】:

    它正在尝试使用HSQLDB 来执行脚本。您可以做的是为测试创建一个数据库模式并在不同的配置文件中使用它。假设您使用的是 MySQL,您的资源源文件夹中可能有一个 application-test.properties,如下所示:

    spring.datasource.url=jdbc:mysql://localhost/test_db
    spring.datasource.username=your_user
    spring.datasource.password=your_pass
    spring.jpa.hibernate.ddl-auto=create
    

    然后,在您的测试类中,您需要使用注释 @ActiveProfiles 激活此配置文件,并使用 @AutoConfigureTestDatabase 中的注释配置禁用 HSQLDB:

    @DataJpaTest
    @ActiveProfiles("test")
    @AutoConfigureTestDatabase(replace = Replace.NONE)
    public class DBTest { ... }
    

    【讨论】:

    • 我仍然遇到同样的错误(flyway 仍然尝试使用 HSQLDB 执行我的迁移脚本)
    • 你的application-test.propertiessrc/main/resources里面吗?
    猜你喜欢
    • 2019-09-10
    • 2021-12-05
    • 1970-01-01
    • 2021-12-01
    • 2022-01-14
    • 2021-05-07
    • 2020-04-18
    • 2019-07-05
    • 2019-10-06
    相关资源
    最近更新 更多