[play 2.5.4]Cannot connect to database [default]

2,600 views
Skip to first unread message

carl...@hotmail.com

unread,
Aug 17, 2016, 4:28:55 AM8/17/16
to play-framework
I tried to connect postgresql in play 2.5.4, but I got "Cannot connect to database[default]".Below is error message.
[info] application - Creating Pool for datasource 'default'
[error] application -

! @71542895l - Internal server error, for (GET) [/] ->

play.api.Configuration$$anon$1: Configuration error[Cannot connect to database [
default]]
        at play.api.Configuration$.configError(Configuration.scala:154)
        at play.api.Configuration.reportError(Configuration.scala:806)
        at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:
48)
        at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:
42)
        at scala.collection.immutable.List.foreach(List.scala:381)
        at play.api.db.DefaultDBApi.connect(DefaultDBApi.scala:42)
        at play.api.db.DBApiProvider.get$lzycompute(DBModule.scala:72)
        at play.api.db.DBApiProvider.get(DBModule.scala:62)
        at play.api.db.DBApiProvider.get(DBModule.scala:58)
        at com.google.inject.internal.ProviderInternalFactory.provision(Provider
InternalFactory.java:81)
Caused by: play.api.Configuration$$anon$1: Configuration error[Exception during
pool initialization: HikariPool-1 - Connection is not available, request timed o
ut after 30001ms.]
        at play.api.Configuration$.configError(Configuration.scala:154)
        at play.api.PlayConfig.reportError(Configuration.scala:996)
        at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:70)
        at play.api.db.PooledDatabase.createDataSource(Databases.scala:199)
        at play.api.db.DefaultDatabase.dataSource$lzycompute(Databases.scala:123
)
        at play.api.db.DefaultDatabase.dataSource(Databases.scala:121)
        at play.api.db.DefaultDatabase.getConnection(Databases.scala:142)
        at play.api.db.DefaultDatabase.getConnection(Databases.scala:138)
        at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:
44)
        at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DefaultDBApi.scala:
42)
Caused by: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Except
ion during pool initialization: HikariPool-1 - Connection is not available, requ
est timed out after 30001ms.
        at com.zaxxer.hikari.pool.HikariPool.initializeConnections(HikariPool.ja
va:526)
        at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:136)
        at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:71)
        at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.sc
ala:58)
        at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.sc
ala:54)
        at scala.util.Try$.apply(Try.scala:192)
        at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:54)
        at play.api.db.PooledDatabase.createDataSource(Databases.scala:199)
        at play.api.db.DefaultDatabase.dataSource$lzycompute(Databases.scala:123
)
        at play.api.db.DefaultDatabase.dataSource(Databases.scala:121)
Caused by: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection i
s not available, request timed out after 30001ms.
        at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:195)
        at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:147)
        at com.zaxxer.hikari.pool.HikariPool.initializeConnections(HikariPool.ja
va:510)
        at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:136)
        at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:71)
        at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.sc
ala:58)
        at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.sc
ala:54)
        at scala.util.Try$.apply(Try.scala:192)
        at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:54)
        at play.api.db.PooledDatabase.createDataSource(Databases.scala:199)
Caused by: org.postgresql.util.PSQLException: Method org.postgresql.jdbc4.Jdbc4C
onnection.isValid(int) is not yet implemented.
        at org.postgresql.Driver.notImplemented(Driver.java:753)
        at org.postgresql.jdbc4.AbstractJdbc4Connection.isValid(AbstractJdbc4Con
nection.java:109)
        at org.postgresql.jdbc4.Jdbc4Connection.isValid(Jdbc4Connection.java:21)

        at com.zaxxer.hikari.pool.PoolBase.checkValidationMode(PoolBase.java:368
)
        at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:336)
        at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:315)
        at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:171)
        at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:436
)
        at com.zaxxer.hikari.pool.HikariPool.access$500(HikariPool.java:65)
        at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.ja
va:567)


my database configuration in application.conf is as below:
db {
  # You can declare as many datasources as you want.
  # By convention, the default datasource is named `default`

  default.driver=org.postgresql.Driver
  default.url="jdbc:postgresql://x.x.x.x:5432/sid"
  default.user=xxx
  default.password="xxxxxx"
  default.autocommit=true

  # You can turn on SQL logging for any datasource
  #default.logSql=true
}

I put postgresql jdbc jar file in myProject/lib.

I also tried Oracle database, it didn't work too.

Very thanks for your help.

Carl

carl...@hotmail.com

unread,
Aug 17, 2016, 2:33:13 PM8/17/16
to play-framework
Once I changed pool to bonecp, it works. Seems that hikaricp is not working.

Farooq Kamal

unread,
Aug 17, 2016, 4:33:53 PM8/17/16
to play-framework
MyConnectionPool = {
driver = "slick.driver.PostgresDriver$"
db {
dataSourceClass = "org.postgresql.ds.PGSimpleDataSource"
properties = {
serverName = "localhost"
portNumber = "5432"
databaseName = "dbname"
currentSchema = "public"
user = ""
password = ""
}
connectionTimeout = 1000
idleTimeout = 300000
minConnections = 1
maxConnections = 2
}

Try using theses setting in application.conf ... and in your app, have the class below created from Guice

class AppConnector @Inject()(applicationLifecycle: ApplicationLifecycle) extends HasDatabaseConfig[RelationalProfile] {

    override protected val dbConfig = DatabaseConfig.forConfig[RelationalProfile]("MyConnectionPool")
    // you can now use the 'db' object to do db.run(dbIOAction)
    // remove applicationLifecycle if u dont need it
}
Reply all
Reply to author
Forward
0 new messages