[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-liquibase-chto-takoe-checksum-i-zachem-on-nuzhen":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},958,"chto-takoe-checksum-i-zachem-on-nuzhen",29,"liquibase","Liquibase","💧","Что такое checksum и зачем он нужен?","Checksum (контрольная сумма) — это MD5-хеш, который Liquibase вычисляет для каждого changeset на основе его содержимого и сохраняет в столбце `MD5SUM` таблицы DATABASECHANGELOG.\n\n### Зачем нужен checksum\n\n- **Обнаружение изменений** — при каждом запуске Liquibase сверяет текущий checksum changeset с сохранённым в БД. Если они не совпадают, значит, уже применённый changeset был изменён\n- **Защита целостности** — гарантирует, что миграции идемпотентны и выполняются одинаково на всех окружениях\n\n### Что делать при ошибке checksum\n\nОшибка `Validation Failed: X changeset(s) had their checksum changed` возникает, когда содержимое уже применённого changeset было изменено.\n\n**Способы решения:**\n\n1. **Откатить изменение changeset** — вернуть его к исходному виду (предпочтительный вариант)\n\n2. **Выполнить clearCheckSums** — сбрасывает все checksum, при следующем запуске они будут пересчитаны:\n   ```bash\n   liquibase clearCheckSums\n   ```\n   Это безопасно, так как Liquibase просто пересчитает checksum для всех changeset-ов и запишет новые значения.\n\n3. **Установить validCheckSum** — разрешить конкретный changeset с определённым checksum:\n   ```xml\n   \u003CchangeSet id=\"1\" author=\"ivanov\">\n       \u003CvalidCheckSum>8:a]b234cf56\u003C\u002FvalidCheckSum>\n       \u003CvalidCheckSum>ANY\u003C\u002FvalidCheckSum>\n       \u003C!-- ... -->\n   \u003C\u002FchangeSet>\n   ```\n\n**Ключевое правило:** никогда не изменяйте уже применённые changeset-ы. Если нужно внести изменения — создайте новый changeset.\n\n> **На собеседовании:** интервьюер хочет услышать не только «что такое checksum», но и как действовать при ошибке. Частая ошибка — предлагать clearCheckSums как первый способ, тогда как правильный подход — не менять уже применённые changeset-ы.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Что такое checksum и зачем он нужен? — Gymterview","Checksum (контрольная сумма) — это MD5-хеш, который Liquibase вычисляет для каждого changeset на основе его содержимого и сохраняет в столбце `MD5SUM` таблицы D","Checksum (контрольная сумма) — это MD5-хеш, который Liquibase вычисляет для каждого changeset на основе его содержимого ",[7,13],"Checksum (контрольная сумма) — это MD5-хеш, который Liquibase вычисляет для каждого changeset на основе его содержимого и сохраняет в столбце `MD5SUM` таблицы DATABASECHANGELOG.",true]