How to use DATABSE_URL in Play 2.0 (Scala) for local connection to PostgreSQL 9.1 & Heroku?
heroku, playframework-2.0
Solution
Worth a try: in your `application.conf` file, change your `db.default.url` parameter in order to include the username & password in the URL, and remove the `db.default.user` and `db.default.password` parameters:
db.default.url="postgres://foo:bar@localhost/fotoplay"
Problem
I have developed a first web application using a local PostgreSQL 9.1 on OSX (Lion 10.7.4) using Play! Framework 2.0.3. I started with my database connection defined in conf/application.conf (relative to application's directory) with ``` db.default.driver=org.postgresql.Driver db.default.url="jdbc:postgresql://localhost/fotoplay" db.default.user=foo db.default.password=bar ``` (username and password have been changed before posting) This works for writing and testing. I now want to deploy to Heroku. I have set up the Procfile (in application's directory) with a single line: ``` web: target/start -Dhttp.port=${PORT} ${JAVA_OPTS} -DapplyEvolutions.default=false -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=$DATABASE_URL ``` I have exported DATABASE_URL in .bash_profile so that I can echo $DATABASE_URL at the system command line and get ``` postgres://foo:bar@localhost/photoplay ``` At Heroku, I have set up an instance of postgresql. I'm not sure on how to write a database evolution to populate heroku, so I turned that off evolutions and populated my database manually. My current evolutions build tables and populate them with some initial data from some csv files, so I would need to place the csv files somewhere accessible to heroku. At least for a first pass, I don't want to tackle this issue just yet. But as a result of the manual steps, I have a populated database on Heroku. With this configuration, my application runs correctly locally. However, I am not using DATABASE_URL, which seems wrong. I pushed this to HEROKU and is is not able to connect to the database. The error is: ``` Caused by: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "foo" ``` If I remove the username & password, I break my local configuration. I should be able to use DATABASE_URL 'instead of' the older syntax, but I don't quite know how to do that. I don't think that I can figure this out experimentally (wandering high dimensional spaces is hopeless, and there are several possible configuration settings that might be involved & are subject to typos). Any guidance on how I should set up application.conf would be appreciated.