【问题标题】:How to use DATABSE_URL in Play 2.0 (Scala) for local connection to PostgreSQL 9.1 & Heroku?如何在 Play 2.0 (Scala) 中使用 DATABSE_URL 与 PostgreSQL 9.1 和 Heroku 进行本地连接?
【发布时间】:2012-08-15 18:25:17
【问题描述】:

我使用 Play! 在 OSX (Lion 10.7.4) 上使用本地 PostgreSQL 9.1 开发了第一个 Web 应用程序!框架 2.0.3。我从 conf/application.conf(相对于应用程序的目录)中定义的数据库连接开始,使用

db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost/fotoplay"
db.default.user=foo
db.default.password=bar

(发帖前用户名和密码已更改)这适用于编写和测试。我现在想部署到 Heroku。我已经用一行设置了 Procfile(在应用程序的目录中):

web: target/start -Dhttp.port=${PORT} ${JAVA_OPTS}  
-DapplyEvolutions.default=false 
-Ddb.default.driver=org.postgresql.Driver 
-Ddb.default.url=$DATABASE_URL

我已经在 .bash_profile 中导出了 DATABASE_URL,以便我可以在系统命令行中回显 $DATABASE_URL 并获取

postgres://foo:bar@localhost/photoplay

在 Heroku,我设置了一个 postgresql 实例。我不确定如何编写数据库进化来填充heroku,所以我关闭了进化并手动填充了我的数据库。我目前的演变构建表并使用来自一些 csv 文件的一些初始数据填充它们,因此我需要将 csv 文件放置在 heroku 可以访问的地方。至少在第一次通过时,我还不想解决这个问题。但是由于手动步骤,我在 Heroku 上有一个填充数据库。

使用此配置,我的应用程序可以在本地正常运行。但是,我没有使用 DATABASE_URL,这似乎是错误的。我将此推送到HEROKU,但无法连接到数据库。错误是:

Caused by: org.postgresql.util.PSQLException: 
FATAL: password authentication failed for user "foo"

如果我删除用户名和密码,我会破坏我的本地配置。我应该能够使用 DATABASE_URL '而不是'旧的语法,但我不太清楚该怎么做。我不认为我可以通过实验来解决这个问题(徘徊在高维空间是没有希望的,并且可能涉及几种可能的配置设置并且可能会出现拼写错误)。任何有关我应该如何设置 application.conf 的指导将不胜感激。

【问题讨论】:

    标签: heroku playframework-2.0


    【解决方案1】:

    值得一试:在您的 application.conf 文件中,更改您的 db.default.url 参数以在 URL 中包含用户名和密码,并删除 db.default.userdb.default.password 参数:

    db.default.url="postgres://foo:bar@localhost/fotoplay"
    

    【讨论】:

    • 这是对的。您的 db.default.userdb.default.password 配置参数仍在被拾取。您可以在本地和 Heroku 上使用 postgres://username@password@hostname/dbname 语法。在这种情况下,不再需要 db.default.userdb.default.password 参数。
    • db.default.password 的正确格式是 db.default.url="postgres://foo:bar@localhost/fotoplay'
    • 我有一个额外的 'ql',我不需要前导的 'jdbc'。但是一旦我弄清楚了,我就可以放弃用户和密码,一切正常。这在本地和heroku上都有效。所以谢谢两位的指导。我真希望我知道如何在 Play 配置中引用一个 shell 变量,这样我的本地密码就不会位于 Heroku 的源代码中。
    • @BobFolkerts:+1:当我使用 jdbc:postgresql://ac@ac:localhost/ac 时,它告诉我“未知主机 ac@ac:localhost”。但是当我使用 'postgres:' 语法时,它可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2015-08-25
    • 1970-01-01
    • 2012-04-13
    • 2012-07-27
    相关资源
    最近更新 更多