Flyway / Springboot和H2内存中数据库的模式相关问题

yjghlzjz  于 2022-12-13  发布在  Spring
关注(0)|答案(1)|浏览(209)

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [INSERT INTO merchant_rating_detail (order_id, shop_id, user_id, rating, created_datetime, feedback_ids) VALUES(?, ?, ?, ?, ?, ?);]; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "merchant_rating_detail" not found (this database is empty); SQL statement: INSERT INTO merchant_rating_detail (order_id, shop_id, user_id, rating, created_datetime, feedback_ids) VALUES(?, ?, ?, ?, ?, ?); [42104-214]

# Flyway
spring.flyway.enabled= false

# H2
spring.datasource.url=jdbc:h2:mem:testdb;DATABASE_TO_UPPER=false;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.defer-datasource-initialization=true

`
我正在尝试通过一个单元测试,但是不知道怎么做。我该如何以正确的方式实现Flyway。
我试过添加;数据库到上一层=假; DB_CLOSE_ON_EXIT=假且spring.jpa.defer-datasource-initialization=真,但不起作用

nbnkbykc

nbnkbykc1#

Flyway的工作方式是在资源文件夹中添加一个flyway文件。首先(在资源文件夹中)添加一个名为db的文件夹,在db中添加一个名为migration的文件夹。然后在migration中添加一个名为V00X__initial. sql的文件。用数字替换X,比如1。接下来是2。然后将查询写入.sql文件。Flyway将在应用程序或测试启动时运行这些查询。
对于测试,您通常会创建一个V001__make_tables.sql文件,其中包含一个生成表的查询。然后创建一个V002__insert_data.sql文件来插入数据,然后在测试中查看是否添加了上述数据。

相关问题