关于playframework 2.0:如何在Play 2.0(Scala)中使用DATABSE_URL进行到PostgreSQL 9.1的本地连接

How to use DATABSE_URL in Play 2.0 (Scala) for local connection to PostgreSQL 9.1 & Heroku?

我已经使用Play在OSX(Lion 10.7.4)上使用本地PostgreSQL 9.1开发了第一个Web应用程序!框架2.0.3。我开始使用

在conf / application.conf(相对于应用程序的目录)中定义的数据库连接

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

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

1
2
3
4
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并获取

1
postgres://foo:bar@localhost/photoplay

在Heroku,我设置了一个postgresql实例。我不确定如何编写数据库演化以填充heroku,因此我关闭了演化并手动填充了数据库。我目前的开发过程是建立表,并使用来自某些csv文件的一些初始数据填充它们,因此我需要将csv文件放置在heroku可以访问的位置。至少对于第一步,我现在还不想解决这个问题。但是由于手动操作的结果,我在Heroku上拥有一个已填充的数据库。

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

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

如果我删除用户名


值得一试:在您的application.conf文件中,更改您的db.default.url参数以包括用户名