Careeroza
Liquibase
Changelogs and Changesets
Liquibase describes changes as changesets in XML, YAML, JSON or SQL. Each changeset has an id and author. Liquibase records run changesets in DATABASECHANGELOG and uses DATABASECHANGELOGLOCK so only one instance migrates at a time.
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
</dependency>Configuration
application.yml
spring:
liquibase:
change-log: classpath:db/changelog/db.changelog-master.yaml
jpa:
hibernate:
ddl-auto: validateA YAML Changelog
databaseChangeLog:
- changeSet:
id: 3-add-product-sku
author: priya
changes:
- addColumn:
tableName: products
columns:
- column:
name: sku
type: varchar(40)
- sql:
sql: UPDATE products SET sku = CONCAT('SE-', id) WHERE sku IS NULL
- addNotNullConstraint:
tableName: products
columnName: sku
columnDataType: varchar(40)
- addUniqueConstraint:
tableName: products
columnNames: sku
constraintName: uk_products_sku
rollback:
- dropColumn:
tableName: products
columnName: skuTip: Built-in change types (addColumn, createIndex) are translated to the right SQL for each database, and many get automatic rollback.
Startup Log
Running
./mvnw spring-boot:runExample output
INFO liquibase.lockservice : Successfully acquired change log lock INFO liquibase.changelog : Reading from public.databasechangelog Running Changeset: db/changelog/003-add-product-sku.yaml::3-add-product-sku::priya INFO liquibase.changelog : Columns sku(varchar(40)) added to products INFO liquibase.changelog : ChangeSet db/changelog/003-add-product-sku.yaml::3-add-product-sku::priya ran successfully in 84ms INFO liquibase.lockservice : Successfully released change log lock INFO o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available INFO com.shopease.ShopEaseApplication : Started ShopEaseApplication in 4.2 seconds