|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
Прочитал https://habr.com/post/251617/ Вот пример: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Не смог понять при каком условии будет выполнен rollback. Он как-то явно при сборке выполняется, если указать или в случае фэйла? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 13:37 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
Странный вопрос. Rollback для того и пишется чтобы выполняться в случае ошибок. Потому что DDL не транзакционный. И если у тебя апдейт создаёт три таблицы а на третьей падает, то первые две не удалятся. И следующая попытка их создания тоже упадёт, ведь 2 таблицы уже есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 13:52 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
Blazkowicz, А как может упасть create table ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 13:53 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
questionerА как может упасть create table ? Пипец ты буквоед. Не важно что падает. Важно то что нужно откатить. Это же пример просто. Ты пример не можешь экстраполировать на реальный круг задач? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 14:11 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
questionerА как может упасть create table ? Oracle Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 14:37 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
questionerА как может упасть create table ?"already exist", "syntax error", "incompatible options". Проблема не в том, что неприятности случаются, а в том, что иногда (обычно) они случаются внезапно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 14:40 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
+ кончилось место на диске, в процессе выполнения пропала сеть/потерялась связь с сервером (но тут фиг с клиента откатишь), не хватило оперативной памяти в PGA/SGA или process'ов, повреждены файлы, ORA-600 (внутренняя ошибка) и так далее Вообще, я бы смотрел на механизмы конкретной СУБД. В M$ SQL точно можно DDL объединять в пакеты-транзакции, в Oracle вроде тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 14:44 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
BlazkowiczquestionerА как может упасть create table ? Пипец ты буквоед. Не важно что падает. Важно то что нужно откатить. Это же пример просто. Ты пример не можешь экстраполировать на реальный круг задач? Я до этого работал с flyway. Там вроде бы такого не было. Действительно, мне не понятно зачем это надо. Судя по гуглу можно rollback вызывать явно через liquibase плагин в мавене ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 15:17 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevquestionerА как может упасть create table ? Oracle Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Ну и зачем удалять в этом случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 15:17 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev+ кончилось место на диске, в процессе выполнения пропала сеть/потерялась связь с сервером (но тут фиг с клиента откатишь), не хватило оперативной памяти в PGA/SGA или process'ов, повреждены файлы, ORA-600 (внутренняя ошибка) и так далее Вообще, я бы смотрел на механизмы конкретной СУБД. В M$ SQL точно можно DDL объединять в пакеты-транзакции, в Oracle вроде тоже. Вопрос про liquibase ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 15:18 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
questionerНу и зачем удалять в этом случае?Выполняется DDL на цать операций и где-то посередине получаем ошибку. Чисто риторический вопрос что лучше: 1. Отменить всё ранее сделанное, чтобы разобраться ровно с одно проблемой или 2. Ничего не делать, (как-то) исправить одну ошибку, повторить DDL-сценарий и получить кучу наведённых ошибок ? P.S. Я, честно говоря, одного не понимаю - где находятся такие изолированные башни из слоновой кости, где реальный мир остаётся туманным призраком?... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 15:31 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
Basil A. SidorovquestionerНу и зачем удалять в этом случае?Выполняется DDL на цать операций и где-то посередине получаем ошибку. Чисто риторический вопрос что лучше: 1. Отменить всё ранее сделанное, чтобы разобраться ровно с одно проблемой или 2. Ничего не делать, (как-то) исправить одну ошибку, повторить DDL-сценарий и получить кучу наведённых ошибок ? P.S. Я, честно говоря, одного не понимаю - где находятся такие изолированные башни из слоновой кости, где реальный мир остаётся туманным призраком?... Ну мы ж запомнили где свалились. Можно просто всё снести и с самого начала накатить изменения до этой ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 15:54 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
questionerвсё снестиВ терминах СУБД "это" называется rollback (откат, не путать коррупцией). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2018, 16:03 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
BlazkowiczПотому что DDL не транзакционный. Разве что только в MySQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 13:58 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
HettРазве что только в MySQL. И в ещё в десятке не топовых RDBMS таких как Derby, H2, HSQLDB и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 14:01 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
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 но в общем-то оффтоп. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2018, 14:10 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
questioner, у вас что не пост, так обязательно ментальный онанизм. rollback - это свойство changeset, а не отдельного sql, еще читаете какую-то порнографию вместо официальной документации, а в официальной документации пишут, что основной формат чейджлога - xml, а то что можно заколхозить через SQL - так это просто возможность, которую можно (но не нужно) использовать только при искоренении бардака в голове. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2018, 07:36 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
Андрей Панфиловосновной формат чейджлога - xml, а то что можно заколхозить через SQL - так это просто возможность, которую можно (но не нужно) использовать только при искоренении бардака в голове. Да, но вот попробуйте задать check constraint каким либо способом кроме sql. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2018, 15:36 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
mrWolfДа, но вот попробуйте задать check constraint каким либо способом кроме sql.Вы тоже похоже не особо любитель документации... в liquibase есть такие сущности: - чейнлджлог - чейнджесет - чейндж вот formatted sql - это про чейнджлоги, а создать констрейн - это чейндж (и не нужно забывать про оракловый плагин, который таки умеет описывать констрейны через xml/json) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2018, 17:36 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
Андрей Панфилова создать констрейн - это чейндж (и не нужно забывать про оракловый плагин, который таки умеет описывать констрейны через xml/json) Мой поинт в том, что задать констрейн чейндж и сам ликвибэйс может(unique, foreign и т.д.), но вот конкретно CHECK нет, и приходится вставки на SQL городить. Я если честно про оракловый плагин не в курсе, поищу на досуге. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2018, 21:18 |
|
Когда liquibase вызывает rollback ?
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2018, 09:15 |
|
|
start [/forum/topic.php?fid=59&msg=39682102&tid=2121877]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
72ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 194ms |
0 / 0 |