我希望我的Play应用程序在测试、本地和生产(Production Is Heroku)环境中使用不同的数据库.

application.conf个人中,我有:

db.default.driver=org.postgresql.Driver 

%dev.db.default.url="jdbc:postgresql://localhost/foobar" 
%test.db.default.url="jdbc:postgresql://localhost/foobar-test" 
%prod.db.default.url=${DATABASE_URL} 

这似乎不管用.当我跑play testplay run的时候, 所有数据库访问都会失败,并显示以下消息:

 Configuration error [Missing configuration [db.default.url]] (Configuration.scala:258) 

我对此有几个问题:

  • 总的来说,我对数据库的配置有点困惑

  • 我看到其他人建议我创建单独的prod.confdev.conftest.conf个文件,每个文件都包含application.conf,然后包含特定于数据库的配置.但在这种情况下,当我从Play console运行test时,如何指定要使用的数据库?

  • %env语法应该在游戏2中起作用吗?

  • 指定play test使用的环境的正确方式是什么?

推荐答案

在实演2中,没有不同的配置环境.相反,您只需设置或覆盖conf/application.conf文件中的配置参数.一种方法是在play命令行上执行此操作,如下所示:

play -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=$DATABASE_URL ~run

您还可以告诉Play使用不同的配置文件:

play -Dconfig.file=conf/prod.conf ~run

For an example Procfile for Heroku, see:
https://github.com/jamesward/play2bars/blob/scala-anorm/Procfile

More details in the Play Docs:
http://www.playframework.org/documentation/2.0/Configuration

Database相关问答推荐

如何将 Scylla DB 中的计数器列重置为零?

sql-dump 有什么用?

Objective-C中是否有类似于LINQ的东西?

只用一个 save() 插入多行

在 SQL Server 2008 R2 中,如何强制一列对于整个表是唯一的?

错误:mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication

在 MySQL 中实现一对一关系时确定外键

我需要在这个 Django 模型中添加一个 db_index 吗?

如何从表列中删除唯一约束?

SOA 和共享数据库

如何在 Rails 中不启动事务的情况下运行迁移?

从数据库行在 Golang 中创建map

在单个 postgres 查询中多次调用 `now()` 是否总是给出相同的结果?

何时在关系数据库中使用枚举或小表?

数据库查询时间复杂度

在 SQLite 表中使用文本作为主键不好?

为 django 模型自动创建数据的工具

使用 liquibase 更新表中的一行

将 NULL 插入 MySQL 时间戳

python3k中的sqlite3中的cursor.rowcount总是-1