我设置了我的游戏! (使用Slick)应用程序在运行测试时使用H2,到目前为止它运行良好。我现在收到一个错误,因为使用小写的列和表名的普通SQL查询,H2抱怨无法找到TABLE(全部大写)。
现在我需要确定few options,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"
From the documentation,我发现我可以将设置传递给db.default.url
字符串,例如
db.default.url="jdbc:h2:mem:play;MODE=PostgreSQL;"
但我的default.url
设置适用于我的Postgres数据库。在这种情况下,有没有办法将MODE
和IGNORECASE
设置传递给H2?
我尝试将SET IGNORECASE TRUE;
附加到我的SQL查询中,但仍然收到相同的错误。
答案 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,否则我不会。暂不说明为什么这个选项是真的......