2013-10-29 17 views
1

我已经设置了我的Play! (使用Slick)应用程序在运行测试时使用H2,并且迄今为止效果很好。我现在遇到了一个错误,因为使用小写字段和表名的纯SQL查询,而H2声称无法找到TABLE(全部为大写)。在Play中设置IGNORECASE和H2的其他选项!框架测试

现在我需要设置一个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;" 

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

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

+0

如果你使用带引号的大写标识符('create table“TEST”(...)'“)创建表名,那么你还需要使用引号当查询时。所以我想知道,为什么不用引号创建表('create table TEST'或'create table test')? –

+0

jbnunn,请张贴执行查询的scala/slick代码,导致您的问题和确切的错误消息。你是如何创建表格的?另见http://stackoverflow.com/questions/17529384/h2-runscript-command-turns-all-table-names-into-uppercase – cvogt

回答

1

好吧,based off this merge进Play!代码,我想通了:

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

不幸的是,IGNORECASE是不是我还以为是我的表和列仍然需要为了H2正确地使用我的纯SQL查询资本化。

1

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

相关问题