我尝试将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并播放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,但是老实说,我实际上不知道它是否被使用。
jdbc:postgresql://database:5432/smartmarkt
以上连接字符串将在docker网络容器内工作,可通过其主机名访问。