我正在使用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
知道我缺少什么吗?
答案 0 :(得分:2)
spring boot
中不存在该数据库,则可以创建该数据库至少我们使用mysql
:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?createDatabaseIfNotExist=true
所以它应该与postgresql
spring.datasource.url= jdbc:postgresql://localhost:5432/mydb?createDatabaseIfNotExist=true
答案 1 :(得分:0)
由于所有Postgres安装都带有默认数据库,因此从技术上讲,应该可以在一开始(应用程序启动时)连接到该数据库,然后调用
这是您可以在spring初始化之前但在读取属性之后(例如,在Environment Post Processor
中以编程方式进行的操作)需要如此早的调用,因为您可能一方面希望利用spring boot读取的属性,但是到spring boot bean开始使用新创建的数据库时,它将处于“可操作”状态
因此,从技术上讲,这是可能的。但是,我看不到这种情况的实际用例。 如果是用于测试,那么您可以完美地使用默认的Postgres数据库,该数据库在问题的开头就提到过。
如果用于生产环境-通常DBA不允许这样做,因为为了能够运行该CREATE DATABASE
语句,连接到Postgres(在这种情况下为Spring Boot应用程序)的用户应具有一个非常“强”的 createdb 特权,这是DBA不想共享的。
答案 2 :(得分:0)
简答:
<块引用>它不能像我们在 MySQL
中所做的那样完成,您需要找到一种方法
自己做 Spring Configuration