我使用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
Run Code Online (Sandbox Code Playgroud)
(用户名和密码在发布前已经更改)这适用于编写和测试.我现在想部署到Heroku.我用一行设置了Procfile(在应用程序的目录中):
web: target/start -Dhttp.port=${PORT} ${JAVA_OPTS}
-DapplyEvolutions.default=false
-Ddb.default.driver=org.postgresql.Driver
-Ddb.default.url=$DATABASE_URL
Run Code Online (Sandbox Code Playgroud)
我已经在.bash_profile中导出了DATABASE_URL,以便我可以在系统命令行中回显$ DATABASE_URL并获取
postgres://foo:bar@localhost/photoplay
Run Code Online (Sandbox Code Playgroud)
在Heroku,我已经设置了postgresql的一个实例.我不确定如何编写数据库演变来填充heroku,所以我把它转换为evolutions并手动填充我的数据库.我当前的进化构建表并用一些csv文件中的一些初始数据填充它们,所以我需要将csv文件放在heroku可访问的地方.至少在第一次通过时,我还不想解决这个问题.但是由于手动步骤,我在Heroku上有一个填充的数据库.
使用此配置,我的应用程序在本地正确运行.但是,我没有使用DATABASE_URL,这似乎是错误的.我将其推送到HEROKU并且无法连接到数据库.错误是:
Caused by: org.postgresql.util.PSQLException:
FATAL: password authentication failed for user "foo"
Run Code Online (Sandbox Code Playgroud)
如果我删除用户名和密码,我会破坏我的本地配置.我应该可以使用DATABASE_URL'而不是'旧语法,但我不知道该怎么做.我不认为我可以通过实验来解决这个问题(游荡的高维空间是没有希望的,并且有几种可能的配置设置可能涉及并且会受到拼写错误).关于如何设置application.conf的任何指导将不胜感激.