Почему Liquibase generateChangeLog генерирует пустой файл журнала изменений? - PullRequest
0 голосов
/ 28 сентября 2019

Я использую Liquibase для генерации схемы БД из существующей базы данных H2.Я использую следующее:

liquibase  --driver=org.h2.Driver --classpath=./h2-1.4.199.jar --changeLogFile=db.schema.sql --url="jdbc:h2:mem:testdb" --username=sa --password= --logLevel=debug generateChangeLog

Итак, абсолютно стандартные значения для подключения к экземпляру H2.Но команда выше генерирует пустой файл журнала изменений (только некоторые основные заголовки Liquibase).

Я пытался использовать разные URL (h2 в файле), я пытался установить другой пароль и имя пользователя, я даже пытался определить параметр defaultSchemaName, но все равно.Плагин Liquibase maven говорит: никаких изменений не найдено, ничего не поделать Liquibase без плагина maven говорит: команда Liquibase 'generateChangeLog' была успешно выполнена.

Я также пытался ввести недопустимые учетные данные (имя пользователя или пароль), но все равно.

1 Ответ

0 голосов
/ 29 сентября 2019

generateChangeLog команда экспортирует данные из указанной базы данных.Это означает, что такая база данных должна существовать и заполняться некоторыми данными.

Нет смысла указывать встроенный URL-адрес в памяти jdbc:h2:mem:testdb здесь.Каждый процесс имеет собственную память и собственные базы данных в памяти.Liquibase определенно увидит здесь пустую базу данных в своей собственной памяти.

Вам необходимо создать обычную постоянную базу данных с вашим приложением и использовать ее URL здесь.Я настоятельно рекомендую вам указать абсолютный путь к базе данных (без расширения имени файла) в URL базы данных, чтобы быть уверенным, что одна и та же база данных будет использоваться вашим приложением и Liquibase.Обратите внимание, что вы не можете использовать встроенную базу данных двумя приложениями одновременно без дополнительных параметров (режим автоматического сервера), поэтому вам необходимо закрыть базу данных в приложении перед запуском Liquibase.В качестве альтернативы вы можете запустить процесс сервера H2 и использовать удаленные URL-адреса или использовать режим автоматического сервера.

Вы также можете добавить ;IFEXISTS=TRUE к URL-адресу базы данных только для Liquibase.Это предотвратит случайное тихое создание новой пустой базы данных в нем.

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