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