Mar*_*rco 15 java mysql hibernate h2 spring-boot
我在执行junit测试时使用schema.sql文件创建我的sql架构时遇到一些问题,而此架构包含mysql特定表达式.我必须添加mode=mysql到H2网址.
例如这样的事情:
jdbc:h2:mem:testd;MODE=MYSQL
但Spring boot会自动使用枚举org.springframework.boot.autoconfigure.jdbc.EmbeddedDatabaseConnection中定义的url及其url
jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE.
我尝试过类似的方法spring.datasource.url=jdbc:h2:mem:testdb;MODE=MYSQL让它工作,但是spring并没有从我的test-application.properties中获取.我的test-application.properties中的所有其他设置都已成功读取.
如果我让spring/hibernate在我的实体中使用javax.persistence注释创建模式(没有schema.sql文件),一切正常.
有一种简单的方法来添加模式吗?
anz*_*ney 13
我遇到了同样的问题.在运行测试时它不会获取URL.我正在使用flyway来管理我的脚本.通过以下几个步骤,我能够让所有这些工作在一起.
V1_init.sql在src/test/resources/db/migration中创建了一个脚本,这样它就是flyway运行的第一个脚本.
SET MODE MYSQL; /* another h2 way to set mode */
CREATE SCHEMA IF NOT EXISTS "public"; /* required due to issue with flyway --> https://stackoverflow.com/a/19115417/1224584*/
Run Code Online (Sandbox Code Playgroud)
更新application-test.yaml为包含架构名称public:
flyway:
schemas: public
Run Code Online (Sandbox Code Playgroud)
确保测试指定了配置文件: @ActiveProfiles("test")
小智 8
组
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL
Run Code Online (Sandbox Code Playgroud)
在application-test.properties中,加上
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ActiveProfiles("test")
Run Code Online (Sandbox Code Playgroud)
在测试课上
我已经尝试过类似的方法来让它工作,但是 spring 没有从我的 test-application.properties 中获取 spring.datasource.url=jdbc:h2:mem:testdb;MODE=MYSQL
您是否尝试附加此参数而不是重写现有参数?
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL
Run Code Online (Sandbox Code Playgroud)
我的 test-application.properties 中的所有其他设置均已成功读取。
我认为该文件应该命名为application-test.properties.
| 归档时间: |
|
| 查看次数: |
15058 次 |
| 最近记录: |