在Play中为H2设置IGNORECASE和其他选项!框架测试

时间:2013-10-29 18:39:56

标签: sql postgresql h2 slick playframework-2.2

我设置了我的游戏! (使用Slick)应用程序在运行测试时使用H2,到目前为止它运行良好。我现在收到一个错误,因为使用小写的列和表名的普通SQL查询,H2抱怨无法找到TABLE(全部大写)。

现在我需要确定few optionsIGNORECASE,可能还需要设置MODE

当我为测试设置数据库时,我使用

def fakeAppWithMemoryDatabase = FakeApplication(additionalConfiguration = inMemoryDatabase())

对于开发,我使用PSQL,所以在我的application.conf文件中,我有:

slick.db.driver=scala.slick.driver.H2Driver

db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost:5432/mydb"

From the documentation,我发现我可以将设置传递给db.default.url字符串,例如

db.default.url="jdbc:h2:mem:play;MODE=PostgreSQL;"

但我的default.url设置适用于我的Postgres数据库。在这种情况下,有没有办法将MODEIGNORECASE设置传递给H2?

我尝试将SET IGNORECASE TRUE;附加到我的SQL查询中,但仍然收到相同的错误。

2 个答案:

答案 0 :(得分:1)

好的,based off this merge进入游戏!代码,我想通了:

FakeApplication(additionalConfiguration = inMemoryDatabase(options = Map("MODE"->"PostgreSQL","IGNORECASE"->"TRUE")))

不幸的是,IGNORECASE不是我想象的那样,我的表和列仍需要大写,以便H2正确使用我的纯SQL查询。

答案 1 :(得分:1)

您需要添加 DATABASE_TO_UPPER = FALSE 到你的网址。它会让你离开“”。 有了这个,我将继续使用H2,否则我不会。暂不说明为什么这个选项是真的......