mysql之SpringBoot 的 DataJpaTest 与 Flyway

cloudgamer 阅读:72 2023-08-23 13:35:30 评论:0

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

请您参考如下方法:

它正在尝试使用 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 { ... } 


标签:Spring Boot
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号