1

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

现在我需要设置一些选项IGNORECASE当然,可能还有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"

从文档中,我看到我可以将设置传递给db.default.url字符串,比如

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

但我的default.url设置是针对我的 Postgres 数据库的。在这种情况下,有没有办法将 H2 传入MODEIGNORECASE设置?

我试图追加SET IGNORECASE TRUE;到我的 SQL 查询,但我仍然收到相同的错误。

4

2 回答 2

1

您需要将 DATABASE_TO_UPPER=false 添加到您的网址。它会让你把“”去掉。有了这个,我将继续使用 H2,否则我不会。不知道为什么这个选项默认为真......

于 2014-07-01T13:26:04.577 回答
1

好的,基于此合并到 Play!代码,我想通了:

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

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

于 2013-10-29T21:57:08.683 回答