Java 为什么h2看不到刚刚迁移的表?
我有一个由PostgreSQL 10支持的Spring Boot web服务。由于有几轮开发,Flyway用于应用DB中所有必要的更改。 现在我需要用test覆盖我们的一个模块,因此我需要模拟PostgreSQL,我决定使用H2。奇怪的是,当我运行测试时,我可以看到我在DB迁移方面没有问题,但当我尝试使用存储库时,我发现Java 为什么h2看不到刚刚迁移的表?,java,spring-boot,h2,flyway,Java,Spring Boot,H2,Flyway,我有一个由PostgreSQL 10支持的Spring Boot web服务。由于有几轮开发,Flyway用于应用DB中所有必要的更改。 现在我需要用test覆盖我们的一个模块,因此我需要模拟PostgreSQL,我决定使用H2。奇怪的是,当我运行测试时,我可以看到我在DB迁移方面没有问题,但当我尝试使用存储库时,我发现 Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "MY_TABLE" not found; SQL stat
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "MY_TABLE" not found; SQL statement:
我尝试在连接url中将H2切换到PostgreSQL模式,模式=PostgreSQL,数据库_切换到_LOWER=TRUE,但没有帮助。我还保持连接打开,DB_CLOSE_DELAY=-1。Flyway脚本中的SQL查询看起来不错,因为任何修改它们的尝试都很容易导致语法错误
配置属性
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:test;MODE=PostgreSQL;DATABASE_TO_UPPER=FALSE;DATABASE_TO_LOWER=TRUE;DB_CLOSE_DELAY=-1
username: sa
password: sa
测试班
@SpringBootTestclasses=MyConfig.class
@RunWithSpringRunner.class
公共类邮件服务测试{
@自动连线
私人MyRepo回购;
@试验
公共voidx抛出异常{
repo.findAll;//此处引发异常
}
}
配置类
@SpringBoot配置
@EnableAutoConfigurationexclude=DataSourceAutoConfiguration.class
@PropertySourceclasspath:custom-application.properties
@ComponentScanbasePackages={com.example.myproj}
@EnableJpaRepositoriesbasePackages=com.example.myproj,entityManagerFactoryRef=customEntityManagerFactory,transactionManagerRef=customTransactionManager
@EntityScanbasePackages=com.example.myproj
@启用Web安全性
@EnableGlobalMethodSecurity Repostenabled=true
@EnableJpaAuditingauditorAwareRef=customAuditorAware
@使能调度
公共类MyConfig{
...
}
有什么线索可以解决这个问题,或者至少可以在哪里找到解决方案?谢谢你今天早上还在讨论同一个问题 解决方案处于从AbstractJdbcConfiguration继承的配置中,以更改报价处理: @豆子 @凌驾 公共JdbcMappingContext JdbcMappingContext可选namingStrategy,JdbcCustomConversions自定义转换{ JdbcMappingContext-mappingContext=super.jdbcMappingContextnamingStrategy,customConversions; mappingContext.setForceQuotefalse; 返回mappingContext; } TL;博士 使用JdbcTemplate调试我发现的测试,select*from测试可以工作,但select*from测试不能 这是真正解决这个问题的关键发现 在我的例子中,很明显这是某种回归,因为它在我升级Spring版本之前就起作用了 所以我开始在google中搜索引用JDBCSpring模板。第三项是: