【问题标题】:Cannot connect to remote Heroku Postgres database using Play Framework 2.2.2无法使用 Play Framework 2.2.2 连接到远程 Heroku Postgres 数据库
【发布时间】:2014-05-07 21:38:44
【问题描述】:

我有一个 Heroku 帐户,我创建了一个应用程序和一个 Heroku-Postgres 数据库。 我已经将应用程序提交到 Heroku 云,但我无法访问我创建的数据库。

我正在使用 play,当我在本地数据库中连接我的项目时,application.conf 配置为:

db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost:5432/postgres"
db.default.user=postgres
db.default.password=password

并在本地运行我的服务器,它工作正常。

在我将我的应用程序上传到 Heroku 之前,我更改了这个文件以访问我的 Heroku-Postgres 数据库:

db.default.driver=org.postgresql.Driver db.default.url="jdbc:postgresql://url:5432/database_name?user=name&password=pass&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory"

不再需要用户和密码字段。我已经在我的项目的根目录中创建了一个名为“Procfile”的文件,该文件具有:

web: target/universal/stage/bin/playsense -Dhttp.port=${PORT} -DapplyEvolutions.default=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=${DATABASE_URL}

我在文档中发现了这一点。我不明白为什么它没有连接到我的数据库。 我将 pgAdminIII 与数据库凭据一起使用,它工作正常。

这是缺少/错误的东西,我不知道是什么。

有人可以帮助我吗?提前致谢!

【问题讨论】:

    标签: database postgresql heroku playframework connect


    【解决方案1】:

    在 Heroku 上运行时,您可能需要取消设置 db.default.userdb.default.password 配置参数。但我不确定有一种简单的方法可以做到这一点。所以我通常做的是不在conf/application.conf 中设置它们,而是做类似的事情:

    db.default.driver=org.postgresql.Driver
    db.default.url="postgres://postgres:password@localhost:5432/postgres"
    db.default.url=${?DATABASE_URL}
    #db.default.user=postgres
    #db.default.password=password
    

    这提供了一个默认的db.default.url,但如果设置了DATABASE_URL env var,它会覆盖它。

    【讨论】:

    • 我如何在 Heroku 上调试它,看看我的代码是否有问题。即使使用这种配置,它也不会访问我的数据库。也许是别的东西。在本地,一切正常,在我的计算机上以调试模式运行播放并访问我的 pgAdmin 本地数据库。
    • 使用 heroku logs 在 Heroku 上查看您的应用记录的任何错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 2013-04-21
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多