database - run - Cómo trabajar con liquibase, un ejemplo concreto.
liquibase run changelog (3)
Siguiendo el inicio rápido en liquibase he creado un conjunto 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>
He creado un esquema limpio y he lanzado el comando migrar.
Liquibase creó la base de datos, con las tablas de soporte databasechangelog y ..lock.
Ahora, ¿cómo puedo seguir los cambios? He modificado el conjunto de cambios agregando un nuevo elemento createTable, pero cuando intento el comando "update", liquibase me dice esto
Migration Failed: Validation Failed:
1 change sets check sum
así que no creo haber comprendido la forma de trabajar con liquibase.
Alguien me puede señalar la dirección correcta?
Gracias
Esta respuesta actualmente aceptada está ligeramente desactualizada debido a los cambios en Liquibase 2.x. En la versión 2.x, Liquibase seguirá fallando si la suma de comprobación md5 ha cambiado para un conjunto 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 conjunto de cambios
Nunca debes modificar un <changeSet>
que ya se haya ejecutado. Liquibase calcula las sumas de comprobación para todos los conjuntos de cambios ejecutados y los almacena en el registro. Luego volverá a calcular esa suma de comprobación, la comparará con las almacenadas y fallará la próxima vez que la ejecute si las sumas de verificación difieren.
Lo que debe hacer en su lugar es agregar otro <changeSet>
y colocar su nuevo elemento createTable en él.
QuickStart es una buena lectura pero es realmente rápido :-) Consulte el manual completo, particularmente su sección ChangeSet .
Si se trata de un cambio en un conjunto de cambios que básicamente ya se ha hecho, puede modificar manualmente la base de datos para que su md5 para ese conjunto de cambios coincida con la nueva. Bueno para pequeños cambios textuales. O puede eliminar esa fila de conjunto de cambios de su tabla.