您好,在我的playframework应用程序中,我想配置多个数据库服务器。我想要一个默认的部署。第二个是发展的。
目前我只有一个定义如下:
slick {
dbs {
default {
profile = "slick.jdbc.MySQLProfile$"
db {
driver = "com.mysql.jdbc.Driver"
url = ""
user = ""
password =
}
}
}
}
我怎样才能添加第二个......也许是这样的:
slick {
dbs {
default {
profile = "slick.jdbc.MySQLProfile$"
db {
driver = "com.mysql.jdbc.Driver"
url = ""
user = ""
password =
}
},
development {
profile = "slick.jdbc.MySQLProfile$"
db {
driver = "com.mysql.jdbc.Driver"
url = ""
user = ""
password =
}
}
}
}
这是对的吗?我如何管理在哪种情况下我使用默认值和dev数据库?
提前致谢。
答案 0 :(得分:1)
如果您的应用程序只需要一个数据库 - 并且您想使用一个用于本地开发而一个用于生产(显然),那么您只需要讨论一个数据库。您配置它们的方式是使用两个不同的conf
文件,例如您使用application.conf
的本地文件,以及使用prod-env.conf
的prod,当您使用prod启动服务器时,您将传递{ {1}}作为要使用的参数。
https://www.playframework.com/documentation/2.6.x/Deploying#Using-the-dist-task
如果您在一个环境中有多个数据库(例如,如果您必须处理本地(或prod)中的两个不同的数据库) - 那么您需要使用prod-env.conf
注入here
<强>更新强>
如果您未在交互模式下运行,{p>NamedDatabase("dbName")
将不会选择sbt
选项。您有两个选项,最简单的方法是以交互模式运行
-D
然后执行RPs-MacBook-Pro:play RP$ sbt
[info] Loading project definition from /Users/RP/play/project
[info] Resolving key references (11994 settings) ...
[info] Set current project to play (in build file:/Users/RP/play/)
[play] $
,它应该可以正常工作。
另一种选择是导出系统变量(例如:~run "-Dconfig.file=conf/application-dev.conf"
)并在APP_DEV_CONF_FILE
build.sbt
有了这个,您可以直接使用val devConfigFile = sys.env.get("APP_DEV_CONF_FILE") match {
case Some(config) => config
case None => "application-prod"
}
javaOptions in run ++= Seq(
"-Dconfig.file=conf/" + devConfigFile + ".conf"
)
,无需在交互模式下运行。