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