...
Code Block | ||||
---|---|---|---|---|
| ||||
databaseChangeLog: - changeSet: id: 1policy-2 author: admin changes: - createTable: tableName: personJpaPdpPolicyDeploymentAudit columns: - column: name: id type: int autoIncrement: true constraints: primaryKey: true nullable: false - column: nameconstraints: firstname typeprimaryKey: varchar(50) true - columnnullable: false name: lastnamename type: varchar(50120) - constraintscolumn: name: nullable:version false - column:type: varchar(20) nameconstraints: state typeprimaryKey: char(2) true - changeSet: id: 2 authornullable: adminfalse changes: - addColumncolumn: tableName: person name: pdpGroup columns: type: varchar(255) - columnconstraints: name nullable: usernametrue - column: type: varchar(8) - changeSet: idname: 3pdpType author: admin changes: type: varchar(255) - addLookupTable: existingTableName: personconstraints: existingColumnName: state nullable: true newTableName: state newColumnName:- idcolumn: newColumnDataType: char(2) |
Add a new plugin dependency to pom.xml
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.28</version>
</dependency>
mvn package
mvn liquibase:update
3 new entries in the databasechangelog table
name: action
type: integer
constraints:
nullable: true
- column:
name: timeStamp
type: datetime
constraints:
nullable: true
- changeSet:
id: policy-3
author: admin
changes:
- addColumn:
tableName: JpaPdpPolicyDeploymentAudit
columns:
- column:
name: changedByUser
type: varchar(255)
constraints:
nullable: true
|
Add a new plugin dependency to pom.xml
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.28</version>
</dependency>
mvn package
mvn liquibase:update
2 new entries in the databasechangelog table
Code Block | ||||
---|---|---|---|---|
| ||||
select * from databasechangelog;
+----+ | ||||
Code Block | ||||
| ||||
select * from databasechangelog; +----+--------+------------------+---------------------+---------------+----------+------------------------------------+---------------------------------------------------------------------+------------------+---------------------+---------------+----------+-----------+-----------------+--------+---------------+ | ID | AUTHOR | FILENAME | DATEEXECUTED | ORDEREXECUTED | EXECTYPE | MD5SUM | DESCRIPTION ------------------------------------------------------------------------------------------+----------+------+-----------+----------+--------+---------------+ | ID | AUTHOR | FILENAME | DATEEXECUTED | ORDEREXECUTED | EXECTYPE | MD5SUM | DESCRIPTION | COMMENTS | TAG | LIQUIBASE | CONTEXTS | LABELS | DEPLOYMENT_ID | | COMMENTS | TAG | LIQUIBASE | CONTEXTS | LABELS | DEPLOYMENT_ID | +----+--------+------------------+---------------------+---------------+----------+------------------------------------+---------------------------------------------------------------------------------------------------------+----------+------+-----------+----------+--------+---------------+ | 1 | admin | dbchangelog.yaml | 2021-05-20 16:07:58 | 1 | EXECUTED | 8:f022085620a9dd87ae9ca1f93da51fd0 | createTable tableName=person | | NULL | 3.8.0 | NULL | NULL | 1523278917 | | 2 | policy-2 | admin | dbchangelog.yaml | 2021-05-20 16:07:58 | 2 | EXECUTED | 8:e3f0f50eb245f66c68ec504db93b6717 | addColumn tableName=person | 2021-05-24 15:04:49 | 10 | EXECUTED | 8:f5bd9cec4e2374254cc1985e8e9bfaae | createTable tableName=JpaPdpPolicyDeploymentAudit | | NULL | 3.8.0 | NULL | NULL | 15232789171865089400 | | policy-3 | admin | dbchangelog.yaml | 2021-05-2024 1615:0704:5949 | 311 | EXECUTED | 8:12a8bb9e438047d9332c8aec4f90a76e4c9ec93973102be9b6d966cf6bc724b4 | addLookupTableaddColumn existingColumnNametableName=state, existingTableName=person, newColumnName=id, newTableName=state JpaPdpPolicyDeploymentAudit | | NULL | 3.8.0 | NULL | NULL | 15232789171865089400 | +----+--------+------------------+---------------------+---------------+----------+------------------------------------+---------------------------------------------------------------------------------------------------------+----------+------+-----------+----------+--------+---------------+ |
Test 6: Rollback last update
mvn liquibase:rollback -Dliquibase.rollbackCount=1Dliquibase.rollbackCount=1
[INFO] SELECT * FROM DATABASECHANGELOG ORDER BY DATEEXECUTED ASC, ORDEREXECUTED ASC
[INFO] Rolling Back Changeset:dbchangelog.yaml::policy-3::admin
[INFO] ALTER TABLE person DROP FOREIGN KEY FK_PERSON_STATE
[INFO] DROP TABLE stateJpaPdpPolicyDeploymentAudit DROP COLUMN changedByUser
[INFO] DELETE FROM DATABASECHANGELOG WHERE ID = 'policy-3' AND AUTHOR = 'admin' AND FILENAME = 'dbchangelog.yaml'
...
mvn liquibase:rollback -Dliquibase.rollbackCount=21
[INFO] Rolling Back Changeset:dbchangelog.yaml::policy-2::admin
[INFO] ALTER TABLE person DROP COLUMN usernameDROP TABLE JpaPdpPolicyDeploymentAudit
[INFO] DELETE FROM DATABASECHANGELOG WHERE ID = '2' AND AUTHOR = 'admin' AND FILENAME = 'dbchangelog.yaml'
[INFO] Rolling Back Changeset:dbchangelog.yaml::1::admin
[INFO] DROP TABLE person
[INFO] DELETE FROM DATABASECHANGELOG WHERE ID = '1policy-2' AND AUTHOR = 'admin' AND FILENAME = 'dbchangelog.yaml'
Test 8: Update database with changeLog in YAML format which includes raw SQL
...