Scala Playframework 与 Postgresql 的连接
Scala Playframework connection with Postgresql
我尝试将我的 Play 后端与我的 Postgresql 数据库连接起来,但得到:
play.api.http.HttpErrorHandlerExceptions$$anon: 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 而不是本地主机,没关系(如果会很奇怪,但你永远不会知道)
我还使用 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"));
}
Docker文件
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 网络容器内工作,可以通过其主机名访问。
我尝试将我的 Play 后端与我的 Postgresql 数据库连接起来,但得到:
play.api.http.HttpErrorHandlerExceptions$$anon: 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 而不是本地主机,没关系(如果会很奇怪,但你永远不会知道) 我还使用 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"));
}
Docker文件
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
中添加 jdbclibraryDependencies += jdbc
我的 /lib dic 中也有 postgresql-42.2.13.jar,但老实说,我实际上不知道它是否被使用。
jdbc:postgresql://database:5432/smartmarkt
以上连接字符串将在 docker 网络容器内工作,可以通过其主机名访问。