Estoy tratando de ejecutar el siguiente changeSet
en liquibase que debería crear un índice. Si el índice no existe, debería fallar silenciosamente:Liquibase changeSet con failOnError = "false" siempre se ejecutan?
<changeSet failOnError="false" author="sys" id="1">
<createIndex unique="true" indexName="key1" tableName="Table1">
<column name="name" />
</createIndex>
</changeSet>
Hasta ahora, muy bien. El problema es que este changeSet
no se registra en la tabla DATABASECHANGELOG y por lo tanto se ejecuta cada vez que se ejecuta liquibase. De acuerdo con la documentación de liquibase y p. this answer de Nathen Voxland pensé que el conjunto de cambios debería marcarse como ejecutado en la tabla DATABASECHANGELOG. En cambio, no se registra y como dije antes, se ejecuta cada vez que se ejecuta licibase (y falla cada vez más).
¿Echo de falta algo?
(estoy usando MySQL como DBMS)
Estoy totalmente de acuerdo con usted, usar una condición previa es el enfoque correcto en mi opinión también. Después de todo, eso es lo que hice con mi 'changeSet' (aunque falta la precondición de uniqueConstraintExists, pero ese es otro hecho). Acabo de tropezar con mis expectativas del atributo 'failOnError =" false "' y me pregunté si el comportamiento descrito es un error o una característica;) – ebi
Lamentablemente, una condición previa para Oracle no nulo no funciona para mí porque la comprobación de una columna que no admite nulos no es compatible con liquibase. –
Estoy publicando esto en nombre de [dev-null] (https://stackoverflow.com/users/1436741/dev-null) que ha publicado este comentario como respuesta; _Esto se relaciona con el comentario de st_jeff en la respuesta anterior (pero no tengo ninguna reputación para hacer un comentario): Otro caso de uso para failOnError: Si suelta una restricción única en el oráculo, entonces el índice relacionado solo se cae si es más nuevo que la restricción. Entonces, una declaración de índice de caída después de eliminar la restricción puede generar un error o no, dependiendo de la antigüedad del índice._ – Bugs