You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Play 2.8 Java项目连接PostgreSQL失败问题排查

Play 2.8(Java)连接PostgreSQL失败排查与解决

问题背景

基于JDK 11、Play 2.8.x版本的Java项目,尝试连接PostgreSQL数据库但失败。

数据库连接错误截图

当前配置与代码

SBT依赖

libraryDependencies ++= Seq(
    "org.postgresql" % "postgresql" % "42.3.1",
    jdbc,
    "org.playframework.anorm" %% "anorm" % "2.7.0",
    javaJpa,
    "org.hibernate" % "hibernate-core" % "5.4.32.Final",
    "com.typesafe.play" %% "play-java-jpa" % "2.8.8",
    "net.jodah" % "failsafe" % "2.3.1",
    guice,
    "io.dropwizard.metrics" % "metrics-core" % "4.1.1",
    "com.palominolabs.http" % "url-builder" % "1.1.0",
    "net.jodah" % "failsafe" % "2.3.1",
),

数据库配置(application.conf)

db.default {
    driver=org.postgresql.Driver
    url="jdbc:postgresql://localhost/mydatabase"
    user="postgres"
    password="root@123"
}

控制器代码

public class MyController extends Controller {
    
    private DataSource dataSource;

    @Inject
    public MyController(DataSource dataSource) {
        this.dataSource = dataSource;
    }
    
    public Result index() {
        try (Connection conn = dataSource.getConnection()) {
            return ok("connected database");
        } catch (SQLException e) {
            return internalServerError("Database error: " + e.getMessage());
        }
    }
}

排查与解决步骤

1. 修正控制器语法错误

原代码中return "connected database"未调用Play的ok()方法包装响应,且缺少分号,这会直接导致编译失败,修正后代码如上。

2. 清理冗余依赖

  • 同时引入Anorm和JPA两种持久化方案,易引发依赖冲突或配置混乱:若使用JPA,移除Anorm依赖;若用Anorm,则删除javaJpa、hibernate-core、play-java-jpa相关依赖。
  • failsafe依赖重复引入,保留一个即可。

3. 验证数据库连接有效性

  • 确认PostgreSQL服务正在本地运行,若修改过默认端口(5432),需在URL中补充:jdbc:postgresql://localhost:端口号/mydatabase
  • 手动验证数据库账号权限:用psql -U postgres -d mydatabase -h localhost命令测试连接,输入密码确认是否能正常访问,排除数据库本身的配置问题。

4. 检查Play JDBC配置

  • 确保application.conf未禁用JDBC模块,Play 2.8引入jdbc依赖后会自动启用该模块。
  • 已引入guice依赖,DataSource的注入逻辑可正常生效。

5. 查看详细错误日志

启动项目后,查看logs/application.log中的具体报错信息,定位核心问题:

  • 驱动类找不到:检查PostgreSQL依赖是否已成功下载,SBT同步是否完成。
  • 连接拒绝:确认PostgreSQL服务状态、端口是否匹配。
  • 权限不足:调整数据库用户对mydatabase的访问权限。

内容的提问来源于stack exchange,提问作者sukesh u

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 18:35:28