使用 h2 和 spring boot 进行测试
Posted
技术标签:
【中文标题】使用 h2 和 spring boot 进行测试【英文标题】:Tests using h2 and spring boot 【发布时间】:2019-04-01 13:15:33 【问题描述】:我正在使用 Postgresql 数据库和模式开发应用程序。 在 Entity 中,我使用注释 @table (schema = 'schema name')。 当我在 h2 上运行测试时,出现错误:
Caused by: org.h2.jdbc.JdbcSQLException: Schema "schema name" not found; SQL statement:
我尝试创建文件 schema.sql,包含:
CREATE SCHEMA IF NOT EXISTS schema name AUTHORIZATION sa;
CREATE SCHEMA IF NOT EXISTS shcema name2 AUTHORIZATION sa;
...
但没有成功。 有人可以帮忙吗?
【问题讨论】:
【参考方案1】:尝试使用 spring.datasource.url 属性定义模式:
spring.datasource.url=jdbc:h2:mem:testdb;INIT=CREATE SCHEMA IF NOT EXISTS 架构名称【讨论】:
我改成这个 src->resources->schema.sql,并在 application.properties spring.datasource.schema=schema.sql。不成功。如果我做 spring.datasource.url=jdbc:h2:mem:testdb;INIT=CREATE SCHEMA IF NOT EXISTS 模式名称,工作,但我有太多模式... 这种情况下你有多个模式定义,如果你想从你的 sql 文件中使用模式然后从'spring.datasource.url'属性中删除';INIT=CREATE SCHEMA IF NOT EXISTS schema name'以上是关于使用 h2 和 spring boot 进行测试的主要内容,如果未能解决你的问题,请参考以下文章
使用 h2database 进行 Spring boot 1.4 测试(在每个测试中回滚)
使用 H2 进行 Spring Boot 测试 - 未找到表“OAUTH_ACCESS_TOKEN”
为啥 H2 进行 spring-boot 测试,但它会将数据写入我的本地 mysql 数据库?
如何告诉 Spring Boot 使用另一个数据库进行测试?