玩!框架 - 无法连接到数据库

时间:2012-08-02 16:53:25

标签: java database postgresql ubuntu playframework-2.0

这是我在尝试连接到本地postgresql db时遇到的错误:

  

无法连接到数据库[默认]

这是数据库配置。 我确信没有拼写错误(胖手指错误)

db.default.url="postgres://localhost:5432/myproject/"
db.default.user="postgres"
db.default.pass="mypassword"
db.default.driver="org.postgresql.Driver"
db.default.initSQL="SELECT 1" 
问题在哪里? 使用pgAdmin我可以轻松连接
附:
我正在使用ubuntu。我注意到为了改成postgres用户
我必须使用“su”,否则无法更改当前用户 这与游戏有关!无法连接我的数据库?

感谢

3 个答案:

答案 0 :(得分:3)

您的设置中可能有两个错误或至少可疑。

首先:postgres:... URL语法不是普通的JDBC URL。 PostgreSQL JDBC驱动程序无法理解此格式。请参阅this answer类似的问题。

第二:您正在尝试使用PostgreSQL超级用户帐户进行播放。超级用户帐户应仅用于 用于管理工作,而不能用于“正常”工作。 特别是不适用于通过某些webfrontend包含对DB的公共访问权限的工作。任何SQL注入攻击都会为攻击者提供数据库的金钥匙 - 包括一次性破坏整个数据库集群或将任何后门安装到数据库服务器中的核心攻击。

所以我建议您创建一个在Play中配置的新用户!设置。

那就是说:postgres用户的默认密码是而不是在Ubuntu上设置。此设置仅允许从同一 OS用户登录数据库用户this answer中解释了如何解决这个问题。

如果这两个提示无效:您引用的错误非常模糊。 必须更详细的错误日志某处。请找到它们并使用“编辑”按钮将它们附加到您的问题中。

答案 1 :(得分:1)

这不是您的问题的直接答案,但我有相同的错误消息,并通过谷歌来到这里。使用Scala Play 2.3,我有

db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://127.0.0.1:5432/noob_development"
db.default.logStatements=true

需要

db.default.driver="org.postgresql.Driver"
db.default.url="jdbc:postgresql://127.0.0.1:5432/noob_development"
db.default.logStatements=true

我不小心将引号括在了驱动程序名称周围。现在它完美无缺。

答案 2 :(得分:1)

这是我的conf,它有效:

db.default.url="jdbc:postgresql://127.0.0.1:5432/dbname"
db.default.driver="org.postgresql.Driver"

只需在jdbc:postgresql之前添加db.default.url