首页 > 解决方案 > Scala Playframework 与 Postgresql 的连接

问题描述

我尝试将我的 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,但老实说,我实际上不知道它是否被使用。

标签: postgresqlscaladockerplayframework

解决方案


jdbc:postgresql://database:5432/smartmarkt

上面的连接字符串将在 docker 网络中工作,容器可以通过它们的主机名访问。


推荐阅读