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