Liquibase diffChangeLog не сообщает о хранимых процедурах

#sql-server #liquibase

#sql-server #liquibase

Вопрос:

Я новичок в Liquibase. Я использую Liquibase версии 4.0 и Windows 10 Home edition

 Starting Liquibase at 23:08:42 (version 4.0.0 #19 built at 2020-07-13 19:45 0000)
Liquibase Version: 4.0.0
Liquibase Community 4.0.0 by Datical
  

Я добавил одну таблицу и SP в DATABASEONE . Я также сгенерировал разницу между двумя базами данных, и это сработало нормально.

 liquibase diffChangeLog
  

liquibase.properties

 driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
classpath=../mssql-jdbc-8.4.0.jre11.jar
url=jdbc:sqlserver://localhost;databaseName=DATABASETWO
username=sa
password=Password123
referenceUrl=jdbc:sqlserver://localhost;databaseName=DATABASEONE
referenceUsername=sa
referencePassword=Password123
changeLogFile=diff.xml
  

Однако Liquibase не сообщает о различиях в хранимых процедурах.

Как я могу получить недавно добавленную (или) отсутствующую информацию о хранимых процедурах в diffChangeLog ?

Редактировать

Я использовал лицензионный ключ Pro (14-дневная пробная версия) для генерации diff для хранимых процедур

Я также сгенерировал liquibase updateSQL > update.sql . Теперь я хочу запустить ‘update.sql’ для другой базы данных. Как я могу это сделать?

Комментарии:

1. Не могли бы вы попробовать diff команду? Отображает ли это различия в хранимых процедурах?

2. ДА. Я уже пробовал, и SPS не существует в файле результатов. Между тем, я использую 14-дневный лицензионный ключ pro, и теперь он выдает SPS в результирующем файле. Не уверен, будут ли изменения SP фиксироваться только в версии PRO

3. Согласно документации , версия liquibase для сообщества будет обрабатывать хранимые процедуры с помощью diffChangeLog command. На мой взгляд, это какая-то ошибка.

4. Отредактировал сообщение, добавив еще один вопрос. Пожалуйста, ответьте, если это возможно

Ответ №1:

Запуск обновления для update.sql, сгенерированного командой liquibase updateSQL > update.sql, вернет дополнительные данные, которые являются отладочной информацией. Не просто прямой SQL. Вы захотите:

  • используйте generateChangeLog для создания файла журнала изменений (назовем его change.postgresql.xml )
  • запустите обновление liuqibase, используя приведенный выше файл журнала изменений и URL целевой базы данных

Обратите внимание, если это разные платформы БД, например, из postgres-> mysql, тогда вам придется просмотреть сгенерированный журнал изменений (в данном случае change.postgresql.xml ) для объектов целевой базы данных, не являющихся спецификациями (в данном примере mysql).

Ответ №2:

К сожалению, вы не можете отличить хранимую функцию / процедуру в соответствии с документом diff-changelog

Дополнительная функциональность с Liquibase Pro

В то время как Liquibase с открытым исходным кодом хранит все наборы изменений в журнале изменений, Liquibase Pro создает каталог с именем Objects и размещает каталог на том же уровне, что и ваш журнал изменений. Каталог объектов содержит подкаталог для каждого из следующих хранимых логических типов:

  • checkconstraint
  • пакет
  • packagebody
  • процедура
  • функция
  • триггер
  • синонимы