Попытка заставить Liquibase использовать режим Postgres для базы данных H2 в памяти - PullRequest
1 голос
/ 06 января 2020

Я использую базу данных Postgres в производстве, поэтому я хочу использовать H2 в режиме совместимости Postgres при запуске тестов, чтобы убедиться, что она ведет себя аналогичным образом. Проблема в том, что Liquibase, похоже, предполагает, что он будет работать в собственном режиме, и поэтому генерирует типы данных в стиле H2 для своих изменений.

Итак, в основном я настраиваю H2 с URL-адресом JDB C, например this:

jdbc:h2:mem:~/mydb;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=TRUE;MVCC=true;

Но проблема в том, что Liquibase по-прежнему генерирует операторы создания таблиц, используя «NUMBER» в качестве типа данных, а не «NUMERI C», который H2 ожидает в режиме PostgreSQL. Если я уберу "MODE = PostgreSQL" из URL, он будет работать нормально, но тогда я не получу поведение Postgres в своих модульных тестах.

Итак, есть ли способ заставить Liquibase определить базу данных как Postgres или принудительно сделать это при использовании базы данных H2?

1 Ответ

2 голосов
/ 06 января 2020

Liquibase в настоящее время (3.8.x) не имеет механизма для определения режима совместимости базы данных H2. Возможно, вы сможете заставить Liquibase делать то, что вы хотите, используя комбинацию предварительных условий и изменить инструкции sql в журнале изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...