尝试为针对 PostgreSQL 数据库的 Spring 开发设置 H2 数据库
Trying to set up a H2 database for Spring development against a PostgreSQL database
我正在设置一个小型 SpringBoot 应用程序,它将使用 PostgreSQL 作为数据库。我的开发想法是使用 H2 嵌入式数据库 "passing as" Postgre 数据库,但我并不真正理解我需要做什么来设置所有内容:
1) 为了以防万一,我们使用 Gradle 进行依赖管理:
compile group: 'com.h2database', name: 'h2', version: '1.3.148'
compile group: 'org.springframework', name: 'spring-jdbc', version: '5.2.6.RELEASE'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc', version: '2.3.0.RELEASE'
2) 这是我的申请-dev.properties("dev" 是我的个人资料 运行 申请)(在下方评论和阅读 [=15 后更新) =]):
spring.datasource.url=jdbc:h2:mem:testdb;MODE=PostgreSQL
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.datasource.schema=classpath:/sql/schema.sql
spring.datasource.data=classpath:/sql/data.sql
spring.datasource.initialize=true
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
3)(已更新)schema.sql 是我们的数据库创建脚本,data.sql 是数据脚本(显然),两者都在 /resources/sql.
中
这里的问题是应用程序启动时会加载配置文件 (The following profiles are active: dev
),但是当转到 h2 控制台时,数据库是空的。我什至尝试更改脚本的名称(更改为“_ddl.sql”),但应用程序仍然以相同的方式启动,就好像它甚至没有尝试查找文件一样。
另外,登录时在H2控制台选项上标记GenericPostgreSQL
有意义吗?
关于我在这里遗漏的任何线索?
如果您在 ddl.sql
中有数据库创建脚本,属性文件中的正确条目应该是 spring.datasource.schema
。 spring.datasource.data
用于在应用程序启动期间将初始数据加载到数据库中。你把这些搞混了。
好吧,我有点解决了。
这似乎是混合依赖项和非常长的错误消息的问题。这些依赖项的 "final" 状态如下:
compile group: 'com.h2database', name: 'h2', version: '1.3.148'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc', version: '2.3.0.RELEASE'
我(也)使用 spring-jdbc,它似乎与 spring-boot-starter-jdbc.
冲突
现在,最重要的部分是 what I read here 意识到现在我遇到的错误涉及语法问题:基本上,H2 和 PostgreSQL 不是真正的好朋友,最好只使用 PostgreSQL 数据库地方发展。拜拜
我正在设置一个小型 SpringBoot 应用程序,它将使用 PostgreSQL 作为数据库。我的开发想法是使用 H2 嵌入式数据库 "passing as" Postgre 数据库,但我并不真正理解我需要做什么来设置所有内容:
1) 为了以防万一,我们使用 Gradle 进行依赖管理:
compile group: 'com.h2database', name: 'h2', version: '1.3.148'
compile group: 'org.springframework', name: 'spring-jdbc', version: '5.2.6.RELEASE'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc', version: '2.3.0.RELEASE'
2) 这是我的申请-dev.properties("dev" 是我的个人资料 运行 申请)(在下方评论和阅读 [=15 后更新) =]):
spring.datasource.url=jdbc:h2:mem:testdb;MODE=PostgreSQL
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.datasource.schema=classpath:/sql/schema.sql
spring.datasource.data=classpath:/sql/data.sql
spring.datasource.initialize=true
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
3)(已更新)schema.sql 是我们的数据库创建脚本,data.sql 是数据脚本(显然),两者都在 /resources/sql.
中这里的问题是应用程序启动时会加载配置文件 (The following profiles are active: dev
),但是当转到 h2 控制台时,数据库是空的。我什至尝试更改脚本的名称(更改为“_ddl.sql”),但应用程序仍然以相同的方式启动,就好像它甚至没有尝试查找文件一样。
另外,登录时在H2控制台选项上标记GenericPostgreSQL
有意义吗?
关于我在这里遗漏的任何线索?
如果您在 ddl.sql
中有数据库创建脚本,属性文件中的正确条目应该是 spring.datasource.schema
。 spring.datasource.data
用于在应用程序启动期间将初始数据加载到数据库中。你把这些搞混了。
好吧,我有点解决了。
这似乎是混合依赖项和非常长的错误消息的问题。这些依赖项的 "final" 状态如下:
compile group: 'com.h2database', name: 'h2', version: '1.3.148'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc', version: '2.3.0.RELEASE'
我(也)使用 spring-jdbc,它似乎与 spring-boot-starter-jdbc.
冲突现在,最重要的部分是 what I read here 意识到现在我遇到的错误涉及语法问题:基本上,H2 和 PostgreSQL 不是真正的好朋友,最好只使用 PostgreSQL 数据库地方发展。拜拜