【发布时间】:2020-06-09 15:17:11
【问题描述】:
我尝试将我的 Play 后端与我的 Postgresql 数据库连接,但得到:
play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[PSQLException: Connection to 127.0.0.1:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.]]
数据库正在端口 5432 上运行(已检查)
我正在使用 sbt 和 Play 2.8.2 已经尝试过 127.0.0.1 和 0.0.0.0 而不是 localhost,没关系(如果会很奇怪,但你永远不知道) 我也使用 Docker-Compose 创建数据库。
代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
....
val connection= DriverManager.getConnection ("jdbc:postgresql://127.0.0.1:5432/smartmarkt", "postgres", "postgres")
println("Connected to PostgreSQL database!");
var statement = connection.createStatement();
var resultSet = statement.executeQuery("SELECT * FROM Article");
while (resultSet.next()) {
println(resultSet, resultSet.getString("price"));
}
Dockerfile
services:
web:
build: frontend/
ports:
- "80:80"
links:
- api
database:
image: "postgres" # use latest official postgres version
ports:
- "5432:5432"
environment:
- POSTGRES_DB=smartmarkt
- POSTGRES_PASSWORD=postgres
- POSTGRES_USER=postgres
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
#- ./postgres-data:/var/lib/postgresql/data # persist data even if container shuts downvolumes:
api:
build: backend/
ports:
- "8080:8080"
links:
- database
depends_on:
- database
我在 build.sbt 中添加 jdbc
libraryDependencies += jdbc
我的 /lib dic 中也有 postgresql-42.2.13.jar,但老实说,我实际上不知道它是否被使用。
【问题讨论】:
-
您可以使用
postgres://database:5432从您的应用程序访问数据库,请查看docs.docker.com/compose/networking -
@ShankarShastri dosnt 为我工作,现在我得到“没有为 jdbc:postgres://database:5432 找到合适的驱动程序”(也没有 jdbc:leading)不确定这是否是一个倒退或转发
-
jdbc:postgresql://database:5432/smartmarkt这应该可以工作@Proxy。从 docker 文档本身以 postgres 为例进行了解释。 -
我试过
jdbc:postgresql://database:5432没有 /smartmark。我虽然database:5432会将我直接链接到我配置的数据库(他们没有使用文档中的环境标签)。现在它起作用了。谢谢。 -
我已经添加了一个答案,请标记相同。
标签: postgresql scala docker playframework