2
votes

I am trying to convert a play project from 2.3 to 2.4, and managed to get it to compile following the migration guide.

However I'm not sure how to get a basic working mysql database connection. At run time it gives me pages of stack traces like the output pasted below.

build.sbt

lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)
...
"org.the" % "model-dal" % "1.2.3-SNAPSHOT",

The application.conf

play.evolutions.enabled=false
ebean.thedb=["models.theapp.*"]

Created a ebean.properties file:

datasource.thedb.username=user
datasource.thedb.password=password
datasource.thedb.databaseUrl=jdbc:mysql://127.0.0.1:3306/thedb
datasource.thedb.databaseDriver=com.mysql.jdbc.Driver

plugins.sbt entries

addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "2.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")

Stack trace

    ! @6o56g5bnj - Internal server error, for (GET) [/] ->

    play.api.UnexpectedException: Unexpected exception[CreationException: Unable to create injector, see the following errors:

    1) Error in custom provider, Configuration error: Configuration error[null]
      while locating play.db.ebean.DefaultEbeanConfig$EbeanConfigParser
      at play.db.ebean.EbeanModule.bindings(EbeanModule.java:24):
    Binding(interface play.db.ebean.EbeanConfig to ProviderConstructionTarget(class play.db.ebean.DefaultEbeanConfig$EbeanConfigParser) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
      while locating play.db.ebean.EbeanConfig
        for parameter 0 at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:36)
      at play.db.ebean.EbeanDynamicEvolutions.class(EbeanDynamicEvolutions.java:33)
      while locating play.db.ebean.EbeanDynamicEvolutions
      at play.db.ebean.EbeanModule.bindings(EbeanModule.java:23):
    Binding(class play.api.db.evolutions.DynamicEvolutions to ConstructionTarget(class play.db.ebean.EbeanDynamicEvolutions) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
      while locating play.api.db.evolutions.DynamicEvolutions
      while locating play.api.db.evolutions.ApplicationEvolutionsProvider
      at play.api.db.evolutions.EvolutionsModule.bindings(EvolutionsModule.scala:22):
    Binding(class play.api.db.evolutions.ApplicationEvolutions to ProviderConstructionTarget(class play.api.db.evolutions.ApplicationEvolutionsProvider) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
      while locating play.api.db.evolutions.ApplicationEvolutions
    Caused by: Configuration error: Configuration error[null]
            at play.api.Configuration$.configError(Configuration.scala:178)
            at play.api.Configuration.reportError(Configuration.scala:829)
            at play.Configuration.reportError(Configuration.java:351)
            at play.db.ebean.DefaultEbeanConfig$EbeanConfigParser.parse(DefaultEbeanConfig.java:81)
            at play.db.ebean.DefaultEbeanConfig$EbeanConfigParser.get(DefaultEbeanConfig.java:60)
            at play.db.ebean.DefaultEbeanConfig$EbeanConfigParser.get(DefaultEbeanConfig.java:44)
            at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
            at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:72)
            at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
            at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:62)
            at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
            at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
            at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
            at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
            at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
            at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
1

1 Answers

0
votes

(1) Disabling evolutions is required in the application.conf or the exception above appears. play.evolutions.enabled=false

(2) The database configuration is needed in the play db. properties in the application.conf file, the ebean.properties file is not required.

application.conf

db.thedb.username=user
db.thedb.password=password
db.thedb.databaseUrl=jdbc:mysql://127.0.0.1/thedb
db.thedb.databaseDriver=com.mysql.jdbc.Driver