maven - tutorial - Error de validación de suma de comprobación Liquibase sin ningún cambio
liquibase tutorial español (4)
Maven dispara la validación de liquibase falla incluso no se realizaron cambios en el conjunto de cambios.
Mi base de datos es Oracle.
Situación:
En la tabla de registro de cambios DB se registró el conjunto de cambios
<changeSet id="1" author="me" dbms="oracle">
;Luego, por error, agregué otro conjunto de cambios
<changeSet id="1" author="me" dbms="hsqldb">
Los scripts de liquibase revisados Maven dispararon el error de validación de la suma de comprobación.
Luego cambié hsqldb changeSet a
<changeSet id="2" author="me" dbms="hsqldb">
Maven sigue disparando un error de validación de suma de comprobación.
Luego cambié la primera suma de comprobación de changeSet en DB manualmente a la suma de comprobación actual y las secuencias de comandos se ejecutaron correctamente.
Todo se ve bien, pero cuando vuelvo a implementar toda la aplicación y ejecuto las secuencias de comandos de liquibase, la suma de comprobación del primer changeSet sigue siendo como antes del paso 6.
Mientras lucho con esto, quiero que sea más fácil para las personas con este mismo problema:
- ¡Importante !, liquibase tiene un liquibase tiene un archivo changlog.xml
- En maven pom.xml, coloque las siguientes propiedades.
<project ...>
<plugins>
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>*****</version>
<configuration>
<changeLogFile>src/main/resources/mychangelogfile.xml</changeLogFile>
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>jdbc:oracle:thin:@//X.X.X.X:PORT/XE</url>
<username>yourusername</username>
<password>password</password>
</configuration>
<executions>
<execution>
<goals>
<goal>clearCheckSums</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</project>
**** versión la que utilicé 3.2.0 en url reemplazar con IPADDRESS y PORT.
Finalmente ejecuta mvn liquibase:clearCheckSums
¡Espero eso ayude!
Los errores de validación de suma de comprobación son lanzados por liquibase para indicar que los cambios aplicados a la base de datos ya no coinciden con el mismo contenido especificado dentro de los archivos de changeset de liquibase ....
Esta es una medida de seguridad diseñada para detectar archivos de especificaciones que se comportan mal y que puede suceder fácilmente durante el desarrollo. La mejor manera de solucionar el problema es soltar todos los objetos y ejecutar liquibase contra el entorno de desarrollo fresco de la siguiente manera:
mvn liquibase:dropAll liquibase:update
Documentación para el objetivo drop-all
A veces, en realidad, quieres apoyar el cambio de conjuntos de cambios. En esas circunstancias, liquibase admite un atributo "runOnChange" que aplica selectivamente los conjuntos de cambios a la instancia de la base de datos.
Si está seguro de que sus scripts reflejan correctamente lo que debe estar en la base de datos, ejecute el objetivo de liquibase: clearCheckSums maven, que lo limpiará todo.
En mi caso, olvidé que Liquibase escribe todos los chagelogs en la tabla de la base de datos.
Vaya a la tabla DATABASECHANGELOG y elimine manualmente sus chagelogs.