У нас есть база данных PostgreSQL, которая постоянно обновляется с помощью liquibase одним пользователем (роль владельца БД). Недавно мы запустили команду обновления от имени другого пользователя (владельца системы), и она была зарегистрирована, как если бы это была новая БД/схема, а это означает, что Liquibase пыталась выполнить все наборы изменений с самого начала, а не только те, которые, как мы ожидали, будут последними. которых не было в таблице databasechangelog. Очевидно, это не удалось, поскольку эти наборы изменений уже были применены от имени другого пользователя. Однако возник вопрос, как с этим бороться. Вы знаете, почему оно это делает? Это проблема, связанная с БД, или это проблема на уровне liquibase? Или это вообще проблема, и мы должны принять как часть наших бизнес-процессов, что все обновления конкретной БД должны выполняться одним и тем же пользователем?
Как Liquibase обрабатывает выполнение от нескольких пользователей?
comment
Может быть, другой пользователь запустил liquibase, используя копию файлов набора изменений, чтобы путь был другим? Весь путь является частью идентификатора!
- person Jens   schedule 11.04.2014
Ответы (2)
Liquibase определяет, какие наборы изменений выполнялись, выбирая из таблицы DATABASECHANGELOG. Я предполагаю, что у нового пользователя другая схема по умолчанию, и поэтому он ищет эту таблицу в другом месте.
В зависимости от того, как вы запускаете Liquibase, существует changelogSchemaName или аналогичный атрибут для управления тем, где Liquibase ищет таблицу.
person
Nathan Voxland
schedule
10.04.2014
Похоже, что Liquibase не зависит от пользователя, и эта информация не записывается и не требуется в DATABASECHANGELOG.
person
Neil
schedule
10.04.2014