Создайте базу данных Postgres, если она не существует при запуске весеннего загрузочного приложения - PullRequest
0 голосов
/ 04 июля 2018

Я использую PostgreSQL и spring-boot-2.0.1 и хочу, чтобы мое приложение создавало базу данных, если она не существует. У меня есть следующие варианты в моем application.properties

spring.jpa.hibernate.ddl-auto=update
spring.jpa.generate-ddl=true
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL94Dialect

spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=postgres
spring.datasource.password=123

с вышеупомянутым я получаю ошибку:

Caused by: org.postgresql.util.PSQLException: FATAL: database "mydb" does not exist

Есть идеи, что мне не хватает?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Поскольку все установки Postgres поставляются с базой данных по умолчанию, технически должна быть возможность подключиться к ней в самом начале (при запуске приложения), а затем вызвать

СОЗДАНИЕ БАЗЫ ДАННЫХ

Это то, что вы могли бы сделать программно до инициализации пружины, но после чтения свойств, например, в Постпроцессор среды

Такой ранний вызов необходим, потому что вы, вероятно, хотите воспользоваться преимуществами свойств, считываемых пружинной загрузкой, с одной стороны, но к тому времени, когда бины пружинной загрузки начнут переводить вновь созданную базу данных в «рабочее» состояние. .

Итак, технически это возможно. Тем не менее, я не вижу реального варианта использования для этого сценария. Если это для тестов, то вы можете прекрасно использовать базу данных Postgres по умолчанию, которая была упомянута в самом начале вопроса.

Если это для производственной среды - обычно администраторы базы данных не позволяют этого, потому что для того, чтобы иметь возможность выполнить эту инструкцию CREATE DATABASE, пользователь, который подключается к Postgres (в этом случае приложение весенней загрузки), должен иметь очень " Сильные привилегии createb , которые администратор БД не захочет делить.

0 голосов
/ 04 июля 2018

Вы можете создать базу данных, если она не существует с spring boot

По крайней мере, с mysql мы делаем:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb?createDatabaseIfNotExist=true

То же самое должно быть с postgresql

spring.datasource.url= jdbc:postgresql://localhost:5432/mydb?createDatabaseIfNotExist=true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...