Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Когда liquibase вызывает rollback ? / 21 сообщений из 21, страница 1 из 1
01.08.2018, 13:37
    #39682008
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
Прочитал
https://habr.com/post/251617/

Вот пример:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
--liquibase formatted sql

--changeset User1:1 
create table test1 (
    id int primary key,
    name varchar(255)
);
--rollback drop table test1;



Не смог понять при каком условии будет выполнен rollback. Он как-то явно при сборке выполняется, если указать или в случае фэйла?
...
Рейтинг: 0 / 0
01.08.2018, 13:52
    #39682017
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
Странный вопрос. Rollback для того и пишется чтобы выполняться в случае ошибок. Потому что DDL не транзакционный. И если у тебя апдейт создаёт три таблицы а на третьей падает, то первые две не удалятся. И следующая попытка их создания тоже упадёт, ведь 2 таблицы уже есть.
...
Рейтинг: 0 / 0
01.08.2018, 13:53
    #39682019
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
Blazkowicz,

А как может упасть create table ?
...
Рейтинг: 0 / 0
01.08.2018, 14:11
    #39682033
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
questionerА как может упасть create table ?
Пипец ты буквоед. Не важно что падает. Важно то что нужно откатить. Это же пример просто. Ты пример не можешь экстраполировать на реальный круг задач?
...
Рейтинг: 0 / 0
01.08.2018, 14:37
    #39682050
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
questionerА как может упасть create table ?

Oracle
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> create table test ( id number );
 
Table created

SQL> create table test ( id number );
 
create table test ( id number )
 
ORA-00955: name is already used by an existing object
 
SQL> 
...
Рейтинг: 0 / 0
01.08.2018, 14:40
    #39682054
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
questionerА как может упасть create table ?"already exist", "syntax error", "incompatible options".
Проблема не в том, что неприятности случаются, а в том, что иногда (обычно) они случаются внезапно.
...
Рейтинг: 0 / 0
01.08.2018, 14:44
    #39682058
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
+ кончилось место на диске, в процессе выполнения пропала сеть/потерялась связь с сервером (но тут фиг с клиента откатишь), не хватило оперативной памяти в PGA/SGA или process'ов, повреждены файлы, ORA-600 (внутренняя ошибка) и так далее

Вообще, я бы смотрел на механизмы конкретной СУБД. В M$ SQL точно можно DDL объединять в пакеты-транзакции, в Oracle вроде тоже.
...
Рейтинг: 0 / 0
01.08.2018, 15:17
    #39682083
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
BlazkowiczquestionerА как может упасть create table ?
Пипец ты буквоед. Не важно что падает. Важно то что нужно откатить. Это же пример просто. Ты пример не можешь экстраполировать на реальный круг задач?
Я до этого работал с flyway. Там вроде бы такого не было. Действительно, мне не понятно зачем это надо. Судя по гуглу можно rollback вызывать явно через liquibase плагин в мавене
...
Рейтинг: 0 / 0
01.08.2018, 15:17
    #39682085
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
Leonid KudryavtsevquestionerА как может упасть create table ?

Oracle
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> create table test ( id number );
 
Table created

SQL> create table test ( id number );
 
create table test ( id number )
 
ORA-00955: name is already used by an existing object
 
SQL> 



Ну и зачем удалять в этом случае?
...
Рейтинг: 0 / 0
01.08.2018, 15:18
    #39682086
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
Leonid Kudryavtsev+ кончилось место на диске, в процессе выполнения пропала сеть/потерялась связь с сервером (но тут фиг с клиента откатишь), не хватило оперативной памяти в PGA/SGA или process'ов, повреждены файлы, ORA-600 (внутренняя ошибка) и так далее

Вообще, я бы смотрел на механизмы конкретной СУБД. В M$ SQL точно можно DDL объединять в пакеты-транзакции, в Oracle вроде тоже.
Вопрос про liquibase
...
Рейтинг: 0 / 0
01.08.2018, 15:31
    #39682090
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
questionerНу и зачем удалять в этом случае?Выполняется DDL на цать операций и где-то посередине получаем ошибку.

Чисто риторический вопрос что лучше:
1. Отменить всё ранее сделанное, чтобы разобраться ровно с одно проблемой
или
2. Ничего не делать, (как-то) исправить одну ошибку, повторить DDL-сценарий и получить кучу наведённых ошибок
?

P.S.
Я, честно говоря, одного не понимаю - где находятся такие изолированные башни из слоновой кости, где реальный мир остаётся туманным призраком?...
...
Рейтинг: 0 / 0
01.08.2018, 15:54
    #39682102
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
Basil A. SidorovquestionerНу и зачем удалять в этом случае?Выполняется DDL на цать операций и где-то посередине получаем ошибку.

Чисто риторический вопрос что лучше:
1. Отменить всё ранее сделанное, чтобы разобраться ровно с одно проблемой
или
2. Ничего не делать, (как-то) исправить одну ошибку, повторить DDL-сценарий и получить кучу наведённых ошибок
?

P.S.
Я, честно говоря, одного не понимаю - где находятся такие изолированные башни из слоновой кости, где реальный мир остаётся туманным призраком?...

Ну мы ж запомнили где свалились. Можно просто всё снести и с самого начала накатить изменения до этой ошибки.
...
Рейтинг: 0 / 0
01.08.2018, 16:03
    #39682104
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
questionerвсё снестиВ терминах СУБД "это" называется rollback (откат, не путать коррупцией).
...
Рейтинг: 0 / 0
02.08.2018, 13:58
    #39682578
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
BlazkowiczПотому что DDL не транзакционный.
Разве что только в MySQL.
...
Рейтинг: 0 / 0
02.08.2018, 14:01
    #39682583
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
HettРазве что только в MySQL.
И в ещё в десятке не топовых RDBMS таких как Derby, H2, HSQLDB и т.п.
...
Рейтинг: 0 / 0
02.08.2018, 14:10
    #39682588
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
BlazkowiczHettРазве что только в MySQL.
И в ещё в десятке не топовых RDBMS таких как Derby, H2, HSQLDB и т.п.

да вроде можно в derby

авторDerby permits schema and data manipulation statements (DML) to be intermixed within a single transaction. If you create a table in one transaction, you can also insert into it in that same transaction. A schema manipulation statement (DDL) is not automatically committed when it is performed, but participates in the transaction within which it is issued. Because DDL requires exclusive locks on system tables, keep transactions that involve DDL short.


https://db.apache.org/derby/docs/10.0/manuals/develop/develop63.html

но в общем-то оффтоп.
...
Рейтинг: 0 / 0
03.08.2018, 07:36
    #39682893
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
questioner,

у вас что не пост, так обязательно ментальный онанизм. rollback - это свойство changeset, а не отдельного sql, еще читаете какую-то порнографию вместо официальной документации, а в официальной документации пишут, что основной формат чейджлога - xml, а то что можно заколхозить через SQL - так это просто возможность, которую можно (но не нужно) использовать только при искоренении бардака в голове.
...
Рейтинг: 0 / 0
03.08.2018, 15:36
    #39683152
mrWolf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
Андрей Панфиловосновной формат чейджлога - xml, а то что можно заколхозить через SQL - так это просто возможность, которую можно (но не нужно) использовать только при искоренении бардака в голове.
Да, но вот попробуйте задать check constraint каким либо способом кроме sql.
...
Рейтинг: 0 / 0
03.08.2018, 17:36
    #39683195
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
mrWolfДа, но вот попробуйте задать check constraint каким либо способом кроме sql.Вы тоже похоже не особо любитель документации... в liquibase есть такие сущности:
- чейнлджлог
- чейнджесет
- чейндж

вот formatted sql - это про чейнджлоги, а создать констрейн - это чейндж (и не нужно забывать про оракловый плагин, который таки умеет описывать констрейны через xml/json)
...
Рейтинг: 0 / 0
03.08.2018, 21:18
    #39683243
mrWolf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
Андрей Панфилова создать констрейн - это чейндж (и не нужно забывать про оракловый плагин, который таки умеет описывать констрейны через xml/json)
Мой поинт в том, что задать констрейн чейндж и сам ликвибэйс может(unique, foreign и т.д.), но вот конкретно CHECK нет, и приходится вставки на SQL городить. Я если честно про оракловый плагин не в курсе, поищу на досуге.
...
Рейтинг: 0 / 0
05.08.2018, 09:15
    #39683401
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Когда liquibase вызывает rollback ?
questionerНу мы ж запомнили где свалились. Можно просто всё снести и с самого начала накатить изменения до этой ошибки.
Несколько мыслей.

1) Liquibase используется для непрерываного цикла накатки обновлений на продуктивные БД.
Поэтому вариант всё снести - это конечно вариант. Но только для девелоперских баз. В общем - ничего сносить нельзя. Нужно действовать step-by-step.

2) Liquibase - это софт который бесплатен. И не имеет каких-то особых гарантий в плане DDL некоторых DBMS. Вообще откат операции наподобие drop column даже для меня (бывшего DBA) представляет собой дилемму. Тут надо подумать о том куда складывать данные которые удалились. Не все DBMS (а точнее очень мало) поддерживают откат DDL. Что делать если вдруг закончилось место в Undo-segment или в сегменте данных. Некоторые DDL вообще затрагивают
90% всех данных. Реструктуризация таблиц там... на знаю.

Тоесть идеология liquibase постулирует о том что есть просто какие-то степы. И для них есть
накат изменений и есть откат (который мы кодим вручную). И с откатом реально существуют
проблемы. Чисто технически всё зависит от квалификации админов со стороны заказчика.
Смогут ли они сами без вас урегулировать упавший патч или нет? Бывает так что сидят
индусы которые только исполняют инструкции. И максимум что вы от них дождетесь
- это фрагмент лога в письме о том что установить не удалось.

3) Liquibase не контролирует никак целостность схемы. Он слепой в этом смысле. Единственное
куда он смотрит это его табличка schema_versions и статусы изменнений. Удалось. Не удалось.
Типичный сценарий. На тест БД добавили вручную индекс. И потом чтоб не забыть добавили
скриптики в liquibase а потом при установке этого-же индекса - "стрельнуло". Ни взад ни вперед. Для проверок conditions существует обходной менёвр. Есть секция <preConditions>
которая формально решает вопрос проверок. Но кодить ее - такой-же гимор как роллбек.
Да еще и есть ненулевая вероятность допустить ошибку.



Есть платные версии софта похожие на liquibase. Там наверне есть какие-то гарантии.
Но в жесткой привязке к конкретной DBMS и диалекту SQL.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Когда liquibase вызывает rollback ? / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]