我使用 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 的指导将不胜感激。