playframework数据库连接集默认和开发数据库

时间:2018-01-23 07:19:52

标签: playframework playframework-2.0

您好,在我的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数据库?

提前致谢。

1 个答案:

答案 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" ) ,无需在交互模式下运行。