[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-liquibase-kak-ispolzovat-liquibase-dlya-generatsii-changelog-iz-sushchestvuyushchey-bd":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},1184,"kak-ispolzovat-liquibase-dlya-generatsii-changelog-iz-sushchestvuyushchey-bd",29,"liquibase","Liquibase","💧","Как использовать Liquibase для генерации changelog из существующей БД?","Команда generateChangeLog создаёт changelog на основе текущей структуры БД. Это основной способ внедрения Liquibase в уже существующий проект.\n\n### Генерация через командную строку\n\n```bash\nliquibase --url=jdbc:postgresql:\u002F\u002Flocalhost:5432\u002Fmydb \\\n          --username=admin \\\n          --password=secret \\\n          generateChangeLog \\\n          --changelog-file=db\u002Fchangelog\u002Fgenerated-changelog.xml\n```\n\n### Генерация через Maven\n\n```bash\nmvn liquibase:generateChangeLog\n```\n\n### Что генерируется\n\n- Таблицы и столбцы\n- Первичные ключи\n- Внешние ключи\n- Уникальные ограничения\n- Индексы\n- Представления (views)\n- Последовательности (sequences)\n\n### Что НЕ генерируется\n\n- Хранимые процедуры и функции\n- Триггеры\n- Данные в таблицах (для этого используется отдельная опция `--diffTypes=data`)\n\n### Команда diff\n\nСравнение двух БД:\n\n```bash\nliquibase --url=jdbc:postgresql:\u002F\u002Flocalhost:5432\u002Fdev_db \\\n          --username=admin \\\n          --password=secret \\\n          diff \\\n          --referenceUrl=jdbc:postgresql:\u002F\u002Flocalhost:5432\u002Fprod_db \\\n          --referenceUsername=admin \\\n          --referencePassword=secret\n```\n\n### diffChangeLog\n\nГенерация changelog с различиями между двумя БД:\n\n\u003Cdetails>\u003Csummary>Пример команды diffChangeLog\u003C\u002Fsummary>\n\n```bash\nliquibase --url=jdbc:postgresql:\u002F\u002Flocalhost:5432\u002Fdev_db \\\n          --username=admin \\\n          --password=secret \\\n          diffChangeLog \\\n          --referenceUrl=jdbc:postgresql:\u002F\u002Flocalhost:5432\u002Fprod_db \\\n          --referenceUsername=admin \\\n          --referencePassword=secret \\\n          --changelog-file=diff-changelog.xml\n```\n\n\u003C\u002Fdetails>\n\n### Типичный сценарий внедрения Liquibase в существующий проект\n\n1. Сгенерировать changelog из production БД:\n   ```bash\n   liquibase generateChangeLog --changelog-file=initial-schema.xml\n   ```\n\n2. Проверить и отредактировать сгенерированный changelog\n\n3. Применить changelog с `changeLogSync` (отметить все changeset-ы как выполненные без реального применения):\n   ```bash\n   liquibase changeLogSync\n   ```\n\n4. С этого момента все новые изменения добавляются через обычные changeset-ы\n\nСгенерированный changelog следует рассматривать как отправную точку — его нужно просмотреть, подчистить и при необходимости переструктурировать.\n\n> **На собеседовании:** интервьюер часто спрашивает: «как внедрить Liquibase в проект, где БД уже существует?» Ключевой момент — не забыть про changeLogSync, иначе Liquibase попытается создать уже существующие таблицы. Частая ошибка — не упомянуть ограничения generateChangeLog (не генерирует процедуры и триггеры).","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":19,"featuredSnippetReady":22},"Как использовать Liquibase для генерации changelog из сущест — Gymterview","Команда generateChangeLog создаёт changelog на основе текущей структуры БД. Это основной способ внедрения Liquibase в уже существующий проект.","Команда generateChangeLog создаёт changelog на основе текущей структуры БД. Это основной способ внедрения Liquibase в уж",[7,13],true]