当前位置: 首页 > 知识库问答 >
问题:

对于容器化PostgreSQL的Spring boot,正确的jdbc是什么

骆鸿运
2023-03-14

我有一个Spring boot应用程序,它被容器并发布到docker Hub。我有个Docker-copmse.yml:-

version: '3.1'
services:

postgres:
  image: postgres
  container_name: postgres
  ports:
    - "5432:5432"
  environment:
    - POSTGRES_PASSWORD=postgres
    - POSTGRES_USER=postgres
    - POSTGRES_DB=mydb

profile_back:
  container_name: profile_back
  image: madsum/profile_back
  ports:
    - "8080:8080"
  depends_on:
    - postgres
#spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.url=jdbc:postgresql://postgres:5432/mydb
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.show-sql=true

我不知道什么是正确的spring.datasource.url。我尝试了jdbc:postgresql://localhost:5432/mydbjdbc:postgresql://postgres:5432/mydb。两种方法都出现连接错误。顺便说一句,容器运行得很好。我可以通过docker exec-it--user postgres dbpostgreql sh进行验证。我可以看到创建的数据库。正确的连接方式是什么?

更新问题:-

我在用飞道。现在有个例外:-

启动ApplicationContext时出错。若要显示条件报告,请在启用“调试”的情况下重新运行应用程序。2020-03-06 09:33:02.145错误1---[main]O.S.Boot.SpringApplication:应用程序运行失败

org.springframework.beans.factory.beanCreationException:创建类路径资源[org/springframework/boot/autocigure/flyway/flywayautociguration$flywayconfiguration.class]中定义的名为“flyway初始化器”的bean时出错:调用init方法失败;嵌套异常为java.lang.RuntimeException:Driver org.postgresql.Driver声称不接受jdbcUrl,jdbc:h2:mem:testdb;db_close_delay=-1;db_close_on_exit=false(位于

共有1个答案

龙枫
2023-03-14

仔细阅读异常,给你一个有价值的提示:

调用init方法失败;嵌套异常为java.lang.RuntimeException:驱动程序org.postgresql.Driver声称不接受jdbcUrl,jdbc:h2:mem:testdb;db_close_delay=-1;db_close_on_exit=false 2020-03-06

因此,您的应用程序似乎试图连接到内存中的H2数据库,而不是PostgreSQL。

您是否可能为应用程序使用了不同的配置文件而忘记设置生产配置文件?否则,如果不需要,可以在pom.xml/build.gradle中消除H2依赖项

 类似资料:
  • 我有下面的版本。格雷德尔在我的项目中 文件。实际上,这个Oracle JDBC依赖项导入多个JAR,它们之间有更多冲突文件(内容不同)(例如和此目录中的其他文件)。 当DuplicatesStrategy设置为WARN时,Oracle驱动程序将覆盖SQL Server JDBC驱动程序的。覆盖此(和其他)文件会产生什么后果? 我应该如何处理这些重复文件?有没有办法从所有jar中获取所有文件?jar

  • 问题内容: 我一直在弄乱JSON一段时间,只是将其作为文本推出,它并没有伤害任何人(据我所知),但是我想开始做正确的事情。 我见过 这么 多所谓的“标准”为JSON内容类型: 但是哪一个是正确的,还是最好的?我发现在它们之间存在安全性和浏览器支持问题。 我知道有一个类似的问题, [如果RESTAPI返回JSON,则为哪种MIME类型?,但我想要一个更有针对性的答案。 问题答案: 对于JSON文本:

  • 问题内容: 我正在Heroku上编写一个node.js应用程序,并使用pg模块。我无法弄清楚为查询数据库所需的每个请求获取客户端对象的“正确”方法。 该文档使用如下代码: 但是,您肯定不需要在使用数据库的每个函数中调用对吗?我看过其他执行此操作的代码: 我倾向于第二种选择,因为我相信Heroku的免费数据库实例无论如何都仅限于一个连接,但是以这种方式进行操作是否有任何弊端?每次使用之前,是否需要检

  • 正如我对SpringBoot中REST API的设计所知,我们将为用户设计API 对于get/update/delete=/v1/users/{userId}/addressId/{addressId}(从具有给定用户ID的用户的地址中获取/update/delete地址) 因此,我创建了类似的API,但是对于Add/Get/Update/Delete,我可以通过RestController->S

  • 我试过很多黑暗中的随机镜头,比如: 和UTF8的所有变体,例如UTF8、utf-8、unicode、unicode。 我已尝试将shell环境的LC_CTYPE设置为utf8。 我已尝试在连接URL上设置client_encoding参数。 我已经验证了数据库的编码为UTF8,即。 我已经验证了ROM的续集连接在实际使用之前报告了UTF8的客户端编码,即; 我已经验证了可以使用psql在同一个数据

  • 我有一个ACI,它运行的REST API需要公开,但需要访问vnet内的资源。 出于某种原因,与普通VM不同,如果ACI位于vnet中,则它不能具有公共IP地址。如果您尝试为其提供DNS名称,则会失败。 唯一的选择似乎是使用应用程序网关,如下所述:https://docs.microsoft.com/en-us/azure/container-instances/container-instanc