[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-liquibase-kak-ispolzovat-parametry-i-podstanovki-property-substitution":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},964,"kak-ispolzovat-parametry-i-podstanovki-property-substitution",29,"liquibase","Liquibase","💧","Как использовать параметры и подстановки (property substitution)?","Property substitution — механизм Liquibase, позволяющий использовать переменные в changelog-файлах для адаптации миграций под разные окружения и СУБД.\n\n### Определение параметров в changelog\n\n\u003Cdetails>\u003Csummary>Пример с параметрами в XML\u003C\u002Fsummary>\n\n```xml\n\u003CdatabaseChangeLog\n    xmlns=\"http:\u002F\u002Fwww.liquibase.org\u002Fxml\u002Fns\u002Fdbchangelog\"\n    xmlns:xsi=\"http:\u002F\u002Fwww.w3.org\u002F2001\u002FXMLSchema-instance\"\n    xsi:schemaLocation=\"http:\u002F\u002Fwww.liquibase.org\u002Fxml\u002Fns\u002Fdbchangelog\n        http:\u002F\u002Fwww.liquibase.org\u002Fxml\u002Fns\u002Fdbchangelog\u002Fdbchangelog-latest.xsd\">\n\n    \u003Cproperty name=\"table.prefix\" value=\"app_\"\u002F>\n    \u003Cproperty name=\"varchar.type\" value=\"VARCHAR\" dbms=\"postgresql\"\u002F>\n    \u003Cproperty name=\"varchar.type\" value=\"NVARCHAR\" dbms=\"mssql\"\u002F>\n    \u003Cproperty name=\"id.type\" value=\"BIGINT\"\u002F>\n\n    \u003CchangeSet id=\"14\" author=\"dev\">\n        \u003CcreateTable tableName=\"${table.prefix}users\">\n            \u003Ccolumn name=\"id\" type=\"${id.type}\" autoIncrement=\"true\">\n                \u003Cconstraints primaryKey=\"true\"\u002F>\n            \u003C\u002Fcolumn>\n            \u003Ccolumn name=\"name\" type=\"${varchar.type}(255)\"\u002F>\n        \u003C\u002FcreateTable>\n    \u003C\u002FchangeSet>\n\n\u003C\u002FdatabaseChangeLog>\n```\n\n\u003C\u002Fdetails>\n\n### Передача параметров\n\nЧерез командную строку:\n\n```bash\nliquibase -Dtable.prefix=myapp_ update\n```\n\nЧерез Spring Boot:\n\n```properties\nspring.liquibase.parameters.table.prefix=app_\nspring.liquibase.parameters.schema.name=banking\n```\n\nЧерез файл liquibase.properties:\n\n```properties\nparameter.table.prefix=app_\nparameter.schema.name=banking\n```\n\n### Приоритет параметров (от высшего к низшему)\n\n1. Параметры из командной строки (`-D`)\n2. Параметры из `liquibase.properties`\n3. Параметры из Spring Boot (`spring.liquibase.parameters.*`)\n4. Параметры, определённые в `\u003Cproperty>` внутри changelog\n\n> **На собеседовании:** важно знать приоритет параметров и типичный кейс использования — адаптация типов данных под разные СУБД (VARCHAR для PostgreSQL, NVARCHAR для MSSQL). Частая ошибка — не упомянуть, что параметры из командной строки имеют наивысший приоритет.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":19,"featuredSnippetReady":22},"Как использовать параметры и подстановки (property substitut — Gymterview","Property substitution — механизм Liquibase, позволяющий использовать переменные в changelog-файлах для адаптации миграций под разные окружения и СУБД.","Property substitution — механизм Liquibase, позволяющий использовать переменные в changelog-файлах для адаптации миграци",[7,13],true]