gpt4 book ai didi

database - 使用 play 框架准备多数据库

转载 作者:搜寻专家 更新时间:2023-10-30 20:54:16 26 4
gpt4 key购买 nike

我想准备我的应用程序以与多种数据库类型兼容。为了尝试它,我使用了 H2、MySql 和 Postgresql。所以'我添加到 build.sbt 中:

"mysql" % "mysql-connector-java" % "5.1.35",
"org.postgresql" % "postgresql" % "9.4-1201-jdbc41"

并且我已经添加了 conf/prod.conf 以及所有没有数据库配置的配置,以及 3 个文件: session /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 中

  1. 进化/h2
  2. 进化/mysql
  3. 进化/postgresql

有了这些东西,用户可以使用这个命令启动我的应用程序:

-Dconfig.file=dontforget-conf.conf -DapplyEvolutions.default=true -Dhttp.port=10180 &

这个配置文件是

include "postgresql.conf"

db.postgresql.url="jdbc:postgresql:dontforget"
db.postgresql.user=myUserName
db.postgresql.password=myPassword

但是使用这种配置,当我的应用程序尝试连接到数据库时:默认的 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)

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

最佳答案

是的!!!我找到了!在 Debug模式之后(等等...)

有两个问题。

第一个问题:我必须在我的 application.conf 中添加一个 key :

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 文件夹没有添加到类路径中(引用 Load file from '/conf' directory on Cloudbees)所以我们必须连接 prod.conf、postgresql.conf 和dontforget.conf 到一个唯一的文件中。

我希望我能帮助任何其他开发人员...

关于database - 使用 play 框架准备多数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29876066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com