SpringBoot与Flyway的DataJpaTest

时间:2017-08-01 13:41:54

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

我在项目中使用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一起使用?

1 个答案:

答案 0 :(得分:3)

它正在尝试使用HSQLDB来执行脚本。您可以做的是为测试创建数据库模式,并在不同的配置文件中使用它。假设您正在使用MySQL,那么您的资源源文件夹中可能会有column1 column2 column 3 column 4 orange 1001 TV 1 blue 1003 phone 2 green 3453 laptop 3 red 78934 4 yellow 2389 5 ,如下所示:

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中的注释配置禁用HSQLDB:

@AutoConfigureTestDatabase