Postgresql with Play Framework
-
09-02-2021 - |
Question
Im trying to use Postgresql with Play for their Yabe tutorial and get this error:
Cannot connected to the database, Driver not found (org.postgresql.Driver)
Here is my connection string:
# If you need a full JDBC configuration use the following :
db.url=jdbc:postgresql:yabe
db.driver=org.postgresql.Driver
db.user=yabe
db.pass=yabe
#
# Connections pool configuration :
db.pool.timeout=1000
db.pool.maxSize=30
db.pool.minSize=1
In my lib folder I have this: postgresql-9.1-901.jdbc3.jar
I tried changing the driver name to the same name is tha jar but still get the same error. Any ideas?
Solution
The Play framework already includes the driver for Postgres. do the following:
- Remove any reference to postgreSQL drivers from your dependencies.yml files
- Do a "play deps --sync"
- Remove any jar in your lib/ folder related to postgreSQL drivers
Change your connection string to:
db=postgres://user:pwd@localhost:5432/yabe
This should solve the conflict you have.
OTHER TIPS
If you are using Play 2.0 this works slightly differently. The url actually looks like this:
db.default.driver=org.postgresql.Driver
db.default.url="postgres://user:password@servername/dataBaseName"
But this will also error out unless you add the following lines to you dependencies section in build.scala or build.java:
"postgresql" % "postgresql" % "9.1-901.jdbc4"
If you need SSL support:
db=postgres://user:password@server.example.net:5432/dbname?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
You don't need to edit a full JDBC configuration. I use postgesql in local and I just add this line in application.conf file in conf folder :
# To connect to a local PostgreSQL9 database, use:
db=postgres://userName:yourPassword@localhost:5432/nameOfYourDB
If you are in local, userName is often postgres unless you changed it.
You should copy PostgresSql driver version "JDBC 4" [What you have is JDBC 3]. Get it from here
Alternatively you may use - postgresql 9.1-901.jdbc4
in your dependencies. But I think Maven doesn't have this latest version yet.