代码之家  ›  专栏  ›  技术社区  ›  Felix

playframework数据库连接设置默认和开发数据库

  •  1
  • Felix  · 技术社区  · 7 年前

    您好,在我的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 回复  |  直到 7 年前
        1
  •  1
  •   RP-    7 年前

    如果您的应用程序只需要一个数据库,并且您希望将一个用于本地开发,另一个用于生产(显然),那么您只需要讨论一个数据库。配置它们的方式是使用两种不同的 conf 您使用的本地文件 application.conf 以及您使用的prod prod-env.conf 当您在prod中启动服务器时 产品环境。形态 作为要使用的参数。

    https://www.playframework.com/documentation/2.6.x/Deploying#Using-the-dist-task

    如果在一个环境中有多个数据库(例如,如果必须在本地(或prod)中处理两个不同的数据库),那么需要使用 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 ,无需在交互模式下运行。