Database 使用play framework准备多个数据库

Database 使用play framework准备多个数据库,database,playframework,Database,Playframework,我想让我的应用程序与许多数据库类型兼容。为了尝试,我使用了H2、MySql和Postgresql。因此,我在build.sbt中添加了: "mysql" % "mysql-connector-java" % "5.1.35", "org.postgresql" % "postgresql" % "9.4-1201-jdbc41" 我已经添加了conf/prod.conf,其中包含所有配置,没有数据库配置,还有3个文件: conf/h2.conf include "prod.conf" db.

我想让我的应用程序与许多数据库类型兼容。为了尝试,我使用了H2、MySql和Postgresql。因此,我在build.sbt中添加了:

"mysql" % "mysql-connector-java" % "5.1.35",
"org.postgresql" % "postgresql" % "9.4-1201-jdbc41"
我已经添加了conf/prod.conf,其中包含所有配置,没有数据库配置,还有3个文件: conf/h2.conf

include "prod.conf"

db.h2.driver=org.h2.Driver
db.h2.url="jdbc:h2:mem:dontforget"
db.h2.jndiName=DefaultDS
ebean.h2="fr.chklang.dontforget.business.*"
conf/mysql.conf

include "prod.conf"

db.mysql.driver=com.mysql.jdbc.Driver
db.mysql.jndiName=DefaultDS
ebean.mysql="fr.chklang.dontforget.business.*"
conf/postgresql.conf

include "prod.conf"

db.postgresql.driver=org.postgresql.Driver
db.postgresql.jndiName=DefaultDS
ebean.postgresql="fr.chklang.dontforget.business.*"
我在conf/evolutions中有三个文件夹

  • 进化/h2
  • evolutions/mysql
  • 进化/postgresql
  • 有了这些功能,用户可以使用以下命令启动我的应用程序:

    -Dconfig.file=dontforget-conf.conf -DapplyEvolutions.default=true -Dhttp.port=10180 &
    
    这个conf文件是

    include "postgresql.conf"
    
    db.postgresql.url="jdbc:postgresql:dontforget"
    db.postgresql.user=myUserName
    db.postgresql.password=myPassword
    
    但使用此配置,当我的应用程序尝试连接到DB时: 是否尚未定义默认的EbeanServer?这通常通过ebean.datasource.default属性设置。否则,应通过registerServer()以编程方式注册它。]]

    因此,我尝试在我的配置中添加:

    ebean.datasource.default=postgresql
    
    但当我添加它时,我已经:

    Configuration error: Configuration error[Configuration error[]]
            at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:94)
            at play.api.Configuration.reportError(Configuration.scala:743)
            at play.Configuration.reportError(Configuration.java:310)
            at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:56)
            at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)
            at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)
            at scala.collection.immutable.List.foreach(List.scala:383)
            at play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:91)
            at play.api.Play$$anonfun$start$1.apply(Play.scala:91)
            at play.api.Play$$anonfun$start$1.apply(Play.scala:91)
            at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
            at play.api.Play$.start(Play.scala:90)
            at play.core.StaticApplication.<init>(ApplicationProvider.scala:55)
            at play.core.server.NettyServer$.createServer(NettyServer.scala:253)
            at play.core.server.NettyServer$$anonfun$main$3.apply(NettyServer.scala:289)
            at play.core.server.NettyServer$$anonfun$main$3.apply(NettyServer.scala:284)
            at scala.Option.map(Option.scala:145)
            at play.core.server.NettyServer$.main(NettyServer.scala:284)
            at play.core.server.NettyServer.main(NettyServer.scala)
    Caused by: Configuration error: Configuration error[]
            at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:94)
            at play.api.Configuration.reportError(Configuration.scala:743)
            at play.api.db.BoneCPApi.play$api$db$BoneCPApi$$error(DB.scala:271)
            at play.api.db.BoneCPApi$$anonfun$getDataSource$3.apply(DB.scala:438)
            at play.api.db.BoneCPApi$$anonfun$getDataSource$3.apply(DB.scala:438)
            at scala.Option.getOrElse(Option.scala:120)
            at play.api.db.BoneCPApi.getDataSource(DB.scala:438)
            at play.api.db.DB$$anonfun$getDataSource$1.apply(DB.scala:142)
            at play.api.db.DB$$anonfun$getDataSource$1.apply(DB.scala:142)
            at scala.Option.map(Option.scala:145)
            at play.api.db.DB$.getDataSource(DB.scala:142)
            at play.api.db.DB.getDataSource(DB.scala)
            at play.db.DB.getDataSource(DB.java:25)
            at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:54)
    
    配置错误:配置错误[配置错误[]]
    at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:94)
    at play.api.Configuration.reportError(Configuration.scala:743)
    play.Configuration.reportError(Configuration.java:310)
    at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:56)
    在play.api.play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(play.scala:91)
    在play.api.play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(play.scala:91)
    位于scala.collection.immutable.List.foreach(List.scala:383)
    在play.api.play$$anonfun$start$1.apply$mcV$sp(play.scala:91)
    在play.api.play$$anonfun$start$1.apply(play.scala:91)
    在play.api.play$$anonfun$start$1.apply(play.scala:91)
    在播放时.utils.Threads$.withContextClassLoader(Threads.scala:21)
    在play.api.play$.start(play.scala:90)
    正在运行.core.StaticApplication。(ApplicationProvider.scala:55)
    播放时.core.server.NettyServer$.createServer(NettyServer.scala:253)
    at play.core.server.NettyServer$$anonfun$main$3.apply(NettyServer.scala:289)
    at play.core.server.NettyServer$$anonfun$main$3.apply(NettyServer.scala:284)
    位于scala.Option.map(Option.scala:145)
    at play.core.server.NettyServer$.main(NettyServer.scala:284)
    正在运行的.core.server.NettyServer.main(NettyServer.scala)
    原因:配置错误:配置错误[]
    at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:94)
    at play.api.Configuration.reportError(Configuration.scala:743)
    在play.api.db.BoneCPApi.play$api$db$BoneCPApi$$错误(db.scala:271)
    at play.api.db.BoneCPApi$$anonfun$getDataSource$3.apply(db.scala:438)
    at play.api.db.BoneCPApi$$anonfun$getDataSource$3.apply(db.scala:438)
    在scala.Option.getOrElse(Option.scala:120)
    at play.api.db.BoneCPApi.getDataSource(db.scala:438)
    at play.api.db.db$$anonfun$getDataSource$1.apply(db.scala:142)
    at play.api.db.db$$anonfun$getDataSource$1.apply(db.scala:142)
    位于scala.Option.map(Option.scala:145)
    at play.api.db.db$.getDataSource(db.scala:142)
    at play.api.db.db.getDataSource(db.scala)
    at play.db.db.getDataSource(db.java:25)
    at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:54)
    

    所以我不明白我该怎么做。

    是的!!!我找到了!调试模式后(等…)

    有两个问题

    第一个问题:我必须在我的应用程序中添加密钥。conf:

    ebeanconfig.datasource
    
    对于我(例如),postgresql.conf被修改为:

    db.postgresql.driver=org.postgresql.Driver
    db.postgresql.jndiName=DefaultDS
    ebean.postgresql="fr.chklang.dontforget.business.*"
    ebeanconfig.datasource.default=postgresql
    
    第二个问题:include into play 2.3.x不起作用,因为conf文件夹没有添加到classpath(ref)中,所以我们必须将prod.conf、postgresql.conf和dontforget.conf合并到一个文件中


    我希望我曾经帮助过其他开发人员……

    我忘记了:我使用Play 2.3