layout | title |
---|---|
default |
Liquibase |
- Supports code branching and merging
- Supports multiple developers
- Supports over 15 database types
- Supports XML, YAML, JSON, and SQL formats
- Simple commands like Create Table and Drop Column
- Complex commands like Add Lookup Table and Merge Columns
- Plus the ability to Generate and manage rollback logic
- Open Source: Apache 2.0 License
- Plugin/extensions support
- Java Integration APIs
- Command Line, Ant, Maven, Spring, and Servlet integrations
- Cluster-safe database upgrades
- Database "diff's"
- Database change documentation
- Automated generation of SQL scripts for DBA code review and approval
- Download Liquibase
- Create new changelog file in XML, YAML, JSON or SQLformat
- Add changeset to changelog file
- Run liquibase update
- Commit changelog file to source control
- Repeat
<preConditions>
<runningAs username="liquibase"/>
</preConditions>
<changeSet id="1" author="nvoxland">
<createTable tableName="person">
<column name="id" type="int" autoIncrement="true">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="firstname" type="varchar(50)"/>
<column name="lastname" type="varchar(50)">
<constraints nullable="false"/>
</column>
<column name="state" type="char(2)"/>
</createTable>
</changeSet>
<changeSet id="2" author="nvoxland">
<addColumn tableName="person">
<column name="username" type="varchar(8)"/>
</addColumn>
</changeSet>
<changeSet id="3" author="nvoxland">
<addLookupTable
existingTableName="person" existingColumnName="state"
newTableName="state" newColumnName="id" newColumnDataType="char(2)"/>
</changeSet>
{% endhighlight %}
-
changeSet: id: 1 author: nvoxland changes: - createTable: tableName: person columns: - column: name: id type: int autoIncrement: true constraints: primaryKey: true nullable: false - column: name: firstname type: varchar(50) - column: name: lastname type: varchar(50) constraints: nullable: false - column: name: state type: char(2)
-
changeSet: id: 2 author: nvoxland changes: - addColumn: tableName: person columns: - column: name: username type: varchar(8)
-
changeSet: id: 3 author: nvoxland changes: - addLookupTable: existingTableName: person existingColumnName:state newTableName: state newColumnName: id newColumnDataType: char(2)
{% endhighlight %}
{
"changeSet": {
"id": "1",
"author": "nvoxland",
"changes": [
{
"createTable": {
"tableName": "person",
"columns": [
{
"column": {
"name": "id",
"type": "int",
"autoIncrement": true,
"constraints": {
"primaryKey": true,
"nullable": false
},
}
},
{
"column": {
"name": "firstname",
"type": "varchar(50)"
}
},
{
"column": {
"name": "lastname",
"type": "varchar(50)"
"constraints": {
"nullable": false
},
}
},
{
"column": {
"name": "state",
"type": "char(2)"
}
}
]
}
}
]
}
},
{
"changeSet": {
"id": "2",
"author": "nvoxland",
"changes": [
{
"addColumn": {
"tableName": "person",
"columns": [
{
"column": {
"name": "username",
"type": "varchar(8)"
}
}
]
}
}
]
}
},
{
"changeSet": {
"id": "3",
"author": "nvoxland",
"changes": [
{
"addLookupTable": {
"tableName": "person",
"existingTableName": "person",
"existingColumnName":"state",
"newTableName": "state",
"newColumnName": "id",
"newColumnDataType": "char(2)",
}
}
]
}
}
]
}
{% endhighlight %}
--changeset nvoxland:1 create table person ( id int not null primary key, firstname varchar(80), lastname varchar(80) not null, state varchar(2) );
--changeset nvoxland:2 alter table person add column username varchar(8)
{% endhighlight %}