pedrorijo91
pedrorijo91

Reputation: 7845

mysql jdbc driver NumberFormatException

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

Answers (3)

pedrorijo91
pedrorijo91

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

Michael Landis
Michael Landis

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

DBug
DBug

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

Related Questions