playframework数据库连接设置默认和开发数据库
playframework database connection set default and development database
您好,在我的 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 =
}
}
}
}
对吗?我如何管理在哪种情况下使用默认值以及何时使用开发数据库?
提前致谢。
如果您的应用程序只需要一个数据库——并且您想将一个用于本地开发,一个用于生产(显然),那么您只是在谈论一个数据库。你配置它们的方式是使用两个不同的 conf
文件,比如本地你使用 application.conf
和 prod 你使用 prod-env.conf
并且当你在 prod 中启动服务器时,你传递 prod-env.conf
作为参数使用。
https://www.playframework.com/documentation/2.6.x/Deploying#Using-the-dist-task
如果您在一个环境中有多个数据库(例如,如果您必须在本地(或产品)中处理两个不同的数据库)——那么您需要使用 NamedDatabase("dbName")
注入 here
更新
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"
)
这样就可以直接使用sbt run
,不需要在交互模式下运行ning
您好,在我的 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 =
}
}
}
}
对吗?我如何管理在哪种情况下使用默认值以及何时使用开发数据库?
提前致谢。
如果您的应用程序只需要一个数据库——并且您想将一个用于本地开发,一个用于生产(显然),那么您只是在谈论一个数据库。你配置它们的方式是使用两个不同的 conf
文件,比如本地你使用 application.conf
和 prod 你使用 prod-env.conf
并且当你在 prod 中启动服务器时,你传递 prod-env.conf
作为参数使用。
https://www.playframework.com/documentation/2.6.x/Deploying#Using-the-dist-task
如果您在一个环境中有多个数据库(例如,如果您必须在本地(或产品)中处理两个不同的数据库)——那么您需要使用 NamedDatabase("dbName")
注入 here
更新
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"
)
这样就可以直接使用sbt run
,不需要在交互模式下运行ning