4

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

4

1 回答 1

6

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

db.default.url="postgres://foo:bar@localhost/fotoplay"
于 2012-08-20T12:33:06.633 回答