Установите IGNORECASE и другие параметры для H2 в игре! Рамочный тест

Я настроил свою игру! (с 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. Есть ли способ пройти в MODE а также IGNORECASE настройки для H2 в этом сценарии?

Я пытался добавить SET IGNORECASE TRUE; на мой запрос SQL, но я все еще получаю ту же ошибку.

2 ответа

Вам нужно добавить DATABASE_TO_UPPER=false к вашему URL. Это позволит вам оставить "" вне. С этим я буду продолжать использовать H2, иначе я бы не стал. Не могу сказать, почему эта опция по умолчанию верна...

Хорошо, основано на этом слиянии в Play! код, я понял это:

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

К несчастью, IGNORECASE это не то, о чем я думал, мои таблицы и столбцы по-прежнему должны быть написаны заглавными буквами, чтобы H2 правильно использовал мои запросы в виде простого SQL.

Другие вопросы по тегам