Pregunta

Tras el inicio rápido en liquibase he creado un conjunto de cambios (muy tonta :) )

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 limpio esquema y he lanzado el comando migrate.

Liquibase creado la base de datos, con el apoyo de tablas databasechangelog y ..de bloqueo.

Ahora, ¿cómo puedo hacer seguimiento de los cambios??he modificado el conjunto de la adición de un nuevo createTable elemento, pero cuando me pruebe el comando "actualizar" liquibase me dice que esta

Migration Failed: Validation Failed:
     1 change sets check sum

así que creo que no han entendido la manera de trabajar con liquibase.

Alguien puede que me apunte a la dirección correcta??

Gracias

¿Fue útil?

Solución

Nunca se debe modificar un <changeSet> que ya fue ejecutado. Liquibase calcula las sumas de comprobación para todos los conjuntos de cambios ejecutados y los almacena en el registro. A continuación, volver a calcular la suma de comprobación que, compararlo con los almacenados y fallar la próxima vez que se ejecuta si las sumas de comprobación difieren.

Lo que hay que hacer en su lugar es añadir otro <changeSet> y poner su nuevo elemento createTable en ella.

inicio rápido es bueno readin' pero es de hecho :-) rápida Confirmar la manual de , particularmente su de cambios sección.

Otros consejos

Actualmente aceptado la respuesta es un poco fuera de fecha, basado en los cambios de Liquibase 2.x.En la 2.x versión, Liquibase va a fallar si la suma de comprobación md5 ha cambiado por un conjunto de cambios, pero se puede especificar el runOnChange atributo si usted quiere ser capaz de modificarlo.

A partir de la documentación:

runOnChange - Ejecuta el cambio de la primera vez que se ve y cada vez que el conjunto de cambios ha sido cambiado

Si se trata de un cambio a un conjunto de cambios que básicamente ya se ha hecho, puede modificar manualmente la base de datos de manera que su MD5 para ese conjunto de cambios coincide con la nueva. Bueno para cambios menores en el texto. O puede eliminar esa fila de cambios desde su mesa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top