PostgreSQL ‘数据库不存在’ - Java Spring Boot、Flyway、Docker/PostgreSQL
Posted
技术标签:
【中文标题】PostgreSQL ‘数据库不存在’ - Java Spring Boot、Flyway、Docker/PostgreSQL【英文标题】:PostgreSQL ‘database does not exist’ - Java Spring Boot, Flyway, Docker/PostgreSQL 【发布时间】:2020-08-28 18:16:02 【问题描述】:我正在关注这个教程:https://www.youtube.com/watch?v=vtPkZShrvXQ
…我在数据库迁移方面遇到了麻烦。我使用的是 Spring Boot 2.2.7,并创建了一个名为“demodb”的 PostgreSQL 数据库
当我运行程序时,控制台报错:
org.postgresql.util.PSQLException: FATAL: 数据库“demodb”不存在
这是我的 application.yml 文件,其中包含数据库信息:
app:
datasource:
plaltform: postgres
jdbc-url: jdbc:postgresql://localhost:5432/demodb
username: postgres
password: password
pool-size: 30
这是我在 pom.xml 文件中的依赖项:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>2.2.7.RELEASE</version>
</dependency>
</dependencies>
我在一个单独的文件夹中运行我的迁移,就像我说的,数据库“demodb”确实存在(我从终端创建了它),所以我不确定我为什么会收到这个错误。有什么想法吗?
【问题讨论】:
【参考方案1】:所以我按照相同的教程进行操作。然后我切换到同一个人关于安装 postgres 的视频:https://youtu.be/4smnWU0BhrA?t=811
在我链接您的时间戳时,您最终会在 mac 应用程序中启动 postgres。确保你停止它。对我来说的问题是,自从我在 docker 内部启动 postgres 之前,原来的 postgres 正在侦听端口 5432。而原来的 postgres 没有 demodb。
如果这不是解决方案,请尝试杀死正在侦听端口 5432 的任何内容,然后重试或重新启动 docker 实例。
lsof -i :5432
获取 PID,假设它是 1001,然后执行以下操作:
kill -9 1001
【讨论】:
非常感谢。我还运行了两个 Postgres,它试图连接到我的本地与 docker 中的一个。杀死本地人解决了我的问题。【参考方案2】:可能与您的 application.yml
文件中的拼写错误有关...
app:
datasource:
platform: postgres
(你写的plaltform
)
除此之外,我想知道您为什么不使用默认的 Spring Boot 属性来配置您的数据库连接:
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: dbc:postgresql://localhost:5432/demodb
username: postgres
password: password
还请查看 Spring Boot 属性的参考:https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#data-properties
【讨论】:
谢谢 - 我修复了这个问题,但我仍然收到错误。以上是关于PostgreSQL ‘数据库不存在’ - Java Spring Boot、Flyway、Docker/PostgreSQL的主要内容,如果未能解决你的问题,请参考以下文章
PostgreSql INSERT 插入数据判断数据是否存在,存在则更新,不存在则插入
PostgreSql INSERT 插入数据判断数据是否存在,存在则更新,不存在则插入
表中不存在键,但它是 | Postgresql, timescaledb