gpt4 book ai didi

spring - 如果在运行 spring boot 应用程序时不存在 Postgres 数据库,则创建它

转载 作者:行者123 更新时间:2023-11-29 12:08:04 24 4
gpt4 key购买 nike

我正在使用 PostgreSQLspring-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

知道我错过了什么吗?

最佳答案

由于所有 Postgres 安装都带有默认数据库,从技术上讲,应该可以在最开始(应用程序启动时)连接到它,然后调用

CREATE DATABASE

这是您可以在 spring 初始化之前以编程方式执行的操作,但在读取属性之后,例如在 Environment Post Processor

之所以需要如此早的调用,是因为一方面您可能想利用 spring boot 读取的属性,但到那时 spring boot bean 将开始让新创建的数据库处于“运行”状态.

所以,从技术上讲这是可能的。但是,我看不到这种情况的真实用例。如果它用于测试,那么您可以完美地使用问题开头提到的默认 Postgres 数据库。

如果它用于生产环境 - 通常 DBA 不允许这样做,因为为了能够运行该 CREATE DATABASE 语句,连接到 Postgres 的用户(在这种情况下为 spring boot 应用程序) ) 应该有一个非常“强”的 createdb 特权,这是 DBA 不想分享的东西。

关于spring - 如果在运行 spring boot 应用程序时不存在 Postgres 数据库,则创建它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51173691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com