当弹簧启动加载时,我需要在Postgres中创建一个新的架构。因此,它应该检查该模式是否不存在,然后创建一个新的模式。 我正在使用application.properties进行数据库配置。
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://${vcap.services.postgresql-lite.credentials.hostname}:${vcap.services.postgresql-lite.credentials.port}/${vcap.services.postgresql-lite.credentials.dbname}
spring.datasource.username=${vcap.services.postgresql-lite.credentials.username}
spring.datasource.password=${vcap.services.postgresql-lite.credentials.password}
spring.jpa.properties.hibernate.default_schema=${DATABASE_SCHEMA}
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
Postgres使用的默认架构是公共的,我需要更改以创建自己的架构,这将在env中定义。
答案 0 :(得分:0)
您可以在src / main / resources中放置一个schema-postgresql.sql文件,其内容如下:
如果不存在则创建模式;
答案 1 :(得分:0)
使用以下application.properties文件:
spring.datasource.initialize=true
spring.datasource.schema=${DB_SCHEMA}
在架构文件中添加以下内容:
CREATE TABLE IF NOT EXISTS...
答案 2 :(得分:0)
Postgres不支持Create Database If not exist
。
因此更改了hibernate.hbm2ddl.auto=create
和URL jdbc.url=jdbc:postgresql://localhost/database?createDatabaseIfNotExist=true
不会为您工作。
您可以尝试模拟以下问题中的行为:
Create PostgreSQL database on the fly using Hibernate even if the DB doesn't exist