Дополнительное «GO» после обновления ликвазы - PullRequest
0 голосов
/ 12 сентября 2018

После обновления до liquibase 3.6.1 наши старые <sql> changeSets сломались, если они использовали переменные DECLARE.

Видимо, теперь добавляются дополнительные операторы GO, где есть пустые строки, это не то, как раньшеи теперь он заставляет наши старые файлы выдавать liquibase.exception.DatabaseException: Must declare the scalar variable "@foo".

Как бы нам обойти это или исправить наши старые файлы, чтобы они работали со старыми копиями базы данных без повторного запуска на старых?

1 Ответ

0 голосов
/ 18 сентября 2018

Область действия переменных T-SQL находится в пакете T-SQL. Пакет завершается командой «GO». Следовательно, после GO, @foo должен быть объявлен повторно.

Например:

ОБЪЯВИТЬ @foo int = 0;

GO

SELECT @foo; - Эта строка выдаст ошибку.

Если GO перемещается до конца, он будет работать и вернет значение @ foo.

ОБЪЯВИТЬ @foo int = 1;

SELECT @foo; - Эта строка вернет 1.

GO

Batch Scope - это не новое поведение SQL Server, это было поведение начиная с версии 1.

Попробуйте взглянуть на тег «sqlFile» LiquidBase и посмотреть, были ли атрибуты endDelimiter или атрибут splitStatements установлены неправильно.

...