Установите 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.