Cómo trabajar con liquibase, un ejemplo concreto

Siguiendo el inicio rápido en liquibase, he creado un set de cambios (muy tonto 🙂

Código:

<?xml version="1.0" encoding="UTF-8"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.6" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.6 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.6.xsd"> <changeSet id="1" author="me"> <createTable tableName="first_table"> <column name="id" type="int"> <constraints primaryKey="true" nullable="false"/> </column> <column name="name" type="varchar(50)"> <constraints nullable="false"/> </column> </createTable> <createTable tableName="new_table"> <column name="id" type="int"> <constraints primaryKey="true" nullable="false"/> </column> </createTable> </changeSet> </databaseChangeLog> 

Creé un esquema limpio y lancé el command migrate.

Liquibase creó la database, con las tablas de soporte databasechangelog y ..lock.

¿Ahora cómo puedo rastrear los cambios? modifiqué el set de cambios agregando un nuevo elemento createTable pero cuando bash el command "actualizar", el liquidatario me dice esto

 Migration Failed: Validation Failed: 1 change sets check sum 

así que no creo haber entendido la forma de trabajar con liquibase.

Alguien puede señalarme la dirección correcta?

Gracias

Nunca debe modificar un <changeSet> que ya se haya ejecutado. Liquibase calcula sums de comprobación para todos los changeSets ejecutados y los almacena en el logging. Luego volverá a calcular esa sum de comprobación, la comparará con las almacenadas y fallará la próxima vez que la ejecute si las sums de comprobación difieren.

Lo que debe hacer en su lugar es agregar otro <changeSet> y poner su nuevo elemento createTable en él.

QuickStart es bueno para leer, pero de hecho es rápido 🙂 Consulte el manual completo, particularmente su sección ChangeSet .

Esta respuesta actualmente aceptada está ligeramente desactualizada en function de los cambios en Liquibase 2.x. En la versión 2.x, Liquibase aún fallará si la sum de comprobación md5 ha cambiado para un set de cambios, pero puede especificar el atributo runOnChange si desea poder modificarlo.

De la documentation :

runOnChange – Ejecuta el cambio la primera vez que se ve y cada vez que se cambia el set de cambios

Si se trata de un cambio en un set de cambios que, básicamente, ya se ha realizado, puede modificar manualmente la database para que su md5 para ese set de cambios coincida con el nuevo. Bueno para pequeños cambios textuales. O puede eliminar esa fila de set de cambios de su tabla.