Reputation: 7845
I was trying to deploy my app which uses play (scala) + play-slick at Heroku, using clearDB and I'm getting the following error:
2015-12-18T22:31:12.042179+00:00 app[web.1]: java.sql.SQLTimeoutException: Timeout after 1000ms of waiting for a connection.
2015-12-18T22:31:12.042430+00:00 app[web.1]: at com.zaxxer.hikari.pool.BaseHikariPool.getConnection(BaseHikariPool.java:227)
2015-12-18T22:31:12.042512+00:00 app[web.1]: at com.zaxxer.hikari.pool.BaseHikariPool.getConnection(BaseHikariPool.java:182)
2015-12-18T22:31:12.042589+00:00 app[web.1]: at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:93)
2015-12-18T22:31:12.042666+00:00 app[web.1]: at slick.jdbc.hikaricp.HikariCPJdbcDataSource.createConnection(HikariCPJdbcDataSource.scala:12)
2015-12-18T22:31:12.042743+00:00 app[web.1]: at play.api.db.slick.evolutions.internal.DBApiAdapter$DatabaseAdapter.getConnection(DBApiAdapter.scala:56)
2015-12-18T22:31:12.042854+00:00 app[web.1]: at play.api.db.slick.evolutions.internal.DBApiAdapter$DatabaseAdapter.getConnection(DBApiAdapter.scala:59)
2015-12-18T22:31:12.042930+00:00 app[web.1]: at play.api.db.evolutions.DatabaseEvolutions.databaseEvolutions(EvolutionsApi.scala:119)
2015-12-18T22:31:12.043000+00:00 app[web.1]: at play.api.db.evolutions.DatabaseEvolutions.scripts(EvolutionsApi.scala:97)
2015-12-18T22:31:12.043071+00:00 app[web.1]: at play.api.db.evolutions.DatabaseEvolutions.scripts(EvolutionsApi.scala:112)
2015-12-18T22:31:12.043825+00:00 app[web.1]: at play.api.db.evolutions.DefaultEvolutionsApi.scripts(EvolutionsApi.scala:77)
2015-12-18T22:31:12.043946+00:00 app[web.1]: at play.api.db.evolutions.ApplicationEvolutions$$anonfun$play$api$db$evolutions$ApplicationEvolutions$$runEvolutions$1.apply$mcV$sp(ApplicationEvolutions.scala:50)
2015-12-18T22:31:12.044049+00:00 app[web.1]: at play.api.db.evolutions.ApplicationEvolutions.withLock(ApplicationEvolutions.scala:98)
2015-12-18T22:31:12.044123+00:00 app[web.1]: at play.api.db.evolutions.ApplicationEvolutions.play$api$db$evolutions$ApplicationEvolutions$$runEvolutions(ApplicationEvolutions.scala:49)
2015-12-18T22:31:12.044241+00:00 app[web.1]: at play.api.db.evolutions.ApplicationEvolutions$$anonfun$start$1.apply(ApplicationEvolutions.scala:42)
2015-12-18T22:31:12.044318+00:00 app[web.1]: at play.api.db.evolutions.ApplicationEvolutions$$anonfun$start$1.apply(ApplicationEvolutions.scala:42)
2015-12-18T22:31:12.044416+00:00 app[web.1]: at scala.collection.immutable.Stream.foreach(Stream.scala:594)
2015-12-18T22:31:12.044487+00:00 app[web.1]: at play.api.db.evolutions.ApplicationEvolutions.start(ApplicationEvolutions.scala:42)
2015-12-18T22:31:12.044623+00:00 app[web.1]: at play.api.db.evolutions.ApplicationEvolutions.<init>(ApplicationEvolutions.scala:149)
2015-12-18T22:31:12.044721+00:00 app[web.1]: at play.api.db.evolutions.ApplicationEvolutionsProvider.get$lzycompute(EvolutionsModule.scala:53)
2015-12-18T22:31:12.044797+00:00 app[web.1]: at play.api.db.evolutions.ApplicationEvolutionsProvider.get(EvolutionsModule.scala:53)
2015-12-18T22:31:12.044902+00:00 app[web.1]: at play.api.db.evolutions.ApplicationEvolutionsProvider.get(EvolutionsModule.scala:44)
2015-12-18T22:31:12.044976+00:00 app[web.1]: at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
2015-12-18T22:31:12.045122+00:00 app[web.1]: at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:72)
2015-12-18T22:31:12.045230+00:00 app[web.1]: at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
2015-12-18T22:31:12.045325+00:00 app[web.1]: at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:62)
2015-12-18T22:31:12.045430+00:00 app[web.1]: at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
2015-12-18T22:31:12.045559+00:00 app[web.1]: at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
2015-12-18T22:31:12.045636+00:00 app[web.1]: at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
2015-12-18T22:31:12.045733+00:00 app[web.1]: at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
2015-12-18T22:31:12.045816+00:00 app[web.1]: at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
2015-12-18T22:31:12.046389+00:00 app[web.1]: at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205)
2015-12-18T22:31:12.046492+00:00 app[web.1]: at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199)
2015-12-18T22:31:12.046569+00:00 app[web.1]: at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
2015-12-18T22:31:12.046655+00:00 app[web.1]: at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
2015-12-18T22:31:12.046703+00:00 app[web.1]: at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
2015-12-18T22:31:12.046754+00:00 app[web.1]: at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
2015-12-18T22:31:12.046799+00:00 app[web.1]: at com.google.inject.Guice.createInjector(Guice.java:96)
2015-12-18T22:31:12.046854+00:00 app[web.1]: at com.google.inject.Guice.createInjector(Guice.java:73)
2015-12-18T22:31:12.046917+00:00 app[web.1]: at com.google.inject.Guice.createInjector(Guice.java:62)
2015-12-18T22:31:12.046949+00:00 app[web.1]: at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:126)
2015-12-18T22:31:12.047006+00:00 app[web.1]: at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:93)
2015-12-18T22:31:12.047056+00:00 app[web.1]: at play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
2015-12-18T22:31:12.047155+00:00 app[web.1]: at play.core.server.ProdServerStart$.start(ProdServerStart.scala:52)
2015-12-18T22:31:12.047233+00:00 app[web.1]: at play.core.server.ProdServerStart$.main(ProdServerStart.scala:27)
2015-12-18T22:31:12.047303+00:00 app[web.1]: at play.core.server.ProdServerStart.main(ProdServerStart.scala)
2015-12-18T22:31:12.047760+00:00 app[web.1]: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Cannot load connection class because of underlying exception: 'java.lang.NumberFormatException: For input string: "[email protected]"'.
2015-12-18T22:31:12.047838+00:00 app[web.1]: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
2015-12-18T22:31:12.047913+00:00 app[web.1]: at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
2015-12-18T22:31:12.047988+00:00 app[web.1]: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
2015-12-18T22:31:12.048085+00:00 app[web.1]: at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
2015-12-18T22:31:12.048161+00:00 app[web.1]: at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
2015-12-18T22:31:12.048230+00:00 app[web.1]: at com.mysql.jdbc.Util.getInstance(Util.java:360)
2015-12-18T22:31:12.048300+00:00 app[web.1]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
2015-12-18T22:31:12.048372+00:00 app[web.1]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935)
2015-12-18T22:31:12.048441+00:00 app[web.1]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:924)
2015-12-18T22:31:12.048554+00:00 app[web.1]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:870)
2015-12-18T22:31:12.048623+00:00 app[web.1]: at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:333)
2015-12-18T22:31:12.048706+00:00 app[web.1]: at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:92)
2015-12-18T22:31:12.048779+00:00 app[web.1]: at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:98)
2015-12-18T22:31:12.048851+00:00 app[web.1]: at com.zaxxer.hikari.pool.BaseHikariPool.addConnection(BaseHikariPool.java:438)
2015-12-18T22:31:12.048927+00:00 app[web.1]: at com.zaxxer.hikari.pool.BaseHikariPool$1.run(BaseHikariPool.java:413)
2015-12-18T22:31:12.049058+00:00 app[web.1]: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
2015-12-18T22:31:12.049135+00:00 app[web.1]: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2015-12-18T22:31:12.049207+00:00 app[web.1]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
2015-12-18T22:31:12.049280+00:00 app[web.1]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
2015-12-18T22:31:12.049352+00:00 app[web.1]: at java.lang.Thread.run(Thread.java:745)
2015-12-18T22:31:12.049667+00:00 app[web.1]: Caused by: java.lang.NumberFormatException: For input string: "[email protected]"
2015-12-18T22:31:12.049742+00:00 app[web.1]: at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
2015-12-18T22:31:12.049816+00:00 app[web.1]: at java.lang.Integer.parseInt(Integer.java:580)
2015-12-18T22:31:12.049887+00:00 app[web.1]: at java.lang.Integer.parseInt(Integer.java:615)
2015-12-18T22:31:12.049965+00:00 app[web.1]: at com.mysql.jdbc.NonRegisteringDriver.port(NonRegisteringDriver.java:822)
2015-12-18T22:31:12.050039+00:00 app[web.1]: at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
2015-12-18T22:31:12.050120+00:00 app[web.1]: ... 9 more
2015-12-18T22:31:12.905287+00:00 heroku[web.1]: Process exited with status 255
the database url is something like (info [here](https://devcenter.heroku.com/articles/cleardb#configuring-your-ruby-application-to-use-cleardb)) and it's from clearDB:
slick.dbs.default.db.url = "jdbc:mysql://adffdadf2341:[email protected]/heroku_db?reconnect=true"
As far as I've seen the same problem happened long time ago, with play 1.
I'm using play 2.4.4 and play-slick 1.1.0. Is it an error that was reintroduced? Or I'm I missing something? Is it a mysql driver (known) problem?
Upvotes: 0
Views: 876
Reputation: 7845
solution on play-framework mailing list
sort answer:
"it looks like the mysql jdbc driver is failing to parse the input string "[email protected]”, and that doesn’t seem to originate from Play or play-slick"
final solution:
slick.dbs.default.driver = "slick.driver.MySQLDriver$"
slick.dbs.default.db.driver = "com.mysql.jdbc.Driver"
slick.dbs.default.db.url = "jdbc:mysql://eu-cdbr-west-01.cleardb.com/DATABASE"
slick.dbs.default.db.user = "USER"
slick.dbs.default.db.password = "PASS"
slick.dbs.default.db.connectionTimeout = 10 seconds
I know 10 seconds it's a lot, made it just for testing.
Upvotes: 2
Reputation: 1
I believe that the issue is that your framework cannot swallow the mysql url whole. You need to parse it into its components (username, password, hostname, db name) and stuff them into the proper fields.
Upvotes: 0
Reputation: 2566
MySQL driver is treating adffdadf2341:[email protected]
as host:port
, so it's treating [email protected]
as the port number and trying to convert this to an integer.
If those are intended to be multiple hosts using default port number, replace ':' with ','.
Upvotes: 1