Ahm*_*tfy 7 postgresql spring spring-data spring-boot
我正在使用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
Run Code Online (Sandbox Code Playgroud)
上面我收到错误:
Caused by: org.postgresql.util.PSQLException: FATAL: database "mydb" does not exist
Run Code Online (Sandbox Code Playgroud)
知道我错过了什么吗?
spring boot至少mysql我们这样做:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?createDatabaseIfNotExist=true
Run Code Online (Sandbox Code Playgroud)
所以它应该与 postgresql
spring.datasource.url= jdbc:postgresql://localhost:5432/mydb?createDatabaseIfNotExist=true
Run Code Online (Sandbox Code Playgroud)
由于所有 Postgres 安装都带有默认数据库,从技术上讲,应该可以在一开始(应用程序启动时)连接到它,然后调用
这是您可以在 spring 初始化之前但在读取属性之后以编程方式执行的操作,例如在环境后处理器中
之所以需要这么早的调用,是因为一方面您可能想利用 Spring Boot 读取的属性,但到了 Spring Boot bean 将开始获取处于“操作”状态的新创建的数据库。
所以,从技术上来说是可能的。但是,我看不到此场景的真正用例。如果是为了测试,那么你可以完美地使用默认的 Postgres 数据库,这在问题一开始就提到了。
如果是用于生产环境 - 通常 DBA 不会允许这样做,因为为了能够运行该CREATE DATABASE语句,连接到 Postgres(本例中为 Spring Boot 应用程序)的用户应该具有非常“强”的createb权限,例如DBA 并不真正愿意分享。
| 归档时间: |
|
| 查看次数: |
8261 次 |
| 最近记录: |