春季启动开始时,在postgres中创建模式

时间:2018-11-02 09:04:02

标签: spring postgresql spring-mvc spring-boot

当弹簧启动加载时,我需要在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中定义。

3 个答案:

答案 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

Simulate CREATE DATABASE IF NOT EXISTS for PostgreSQL?