【问题标题】:PostgreSQL ‘database does not exist’ - Java Spring Boot, Flyway, Docker/PostgreSQLPostgreSQL ‘数据库不存在’ - 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”确实存在(我从终端创建了它),所以我不确定我为什么会收到这个错误。有什么想法吗?

【问题讨论】:

    标签: java postgresql spring-boot docker flyway


    【解决方案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

    【讨论】:

    • 谢谢 - 我修复了这个问题,但我仍然收到错误。
    猜你喜欢
    • 2021-11-30
    • 2020-07-10
    • 1970-01-01
    • 2016-10-21
    • 2021-07-14
    • 2023-03-11
    • 2020-06-06
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多