J'ai été capable d'effectuer un rollback pour étiqueter avec seulement des modifications de schéma, mais j'ai rencontré un scénario qui ne fonctionne pas lorsque je mélange des procédures stockées.
J'utilise des changelogs SQL par rapport à une base de données Oracle. Voici le scénario:Rollback to tag ne fonctionne pas si tag appliqué à runOnChange changeset
presse
1.0.0 J'ai un script r-1.0.0.sql qui contient crée une table, et un proc.sql de script qui crée une procédure stockée. Le changeset proc est étiqueté comme runOnChange = true.
Je suis satisfait des changements, et j'étiquette la base de données avec l'étiquette
1.0.0 En fin de la table DATABASECHANGELOG montre:
1 - r-1.0.0.sql éxécutée
2 - proc.sql- EXECUTED- (tag) 1.0.0
2.0.0
presse J'ai un script r-2.0.0 qui renomme une colonne, et je également mis à jour proc.sql avec le nouveau nom de la colonne. Après l'exécution de ce, DATABASECHANGELOG est:
1 - r-1.0.0.sql exécuté
4 - proc.sql-RERAN- (tag) 1.0.0
3 - r-2.0.0.sql exécuté
Vous remarquerez que le script proc re-ran a un nouveau numéro, mais il conserve encore la balise
1.0.0Si je veux rollback de marquer 1.0.0, la commande rollback ne fait rien, car étiquette 1.0.0 correspond au tout dernier changement dans le journal.
Cela semble être voulu par la conception. Existe-t-il une manière différente d'organiser mes modifications pour que cela fonctionne?
En fonction de ce fil, je devrais être en mesure de spécifier un autre tableau de modifications pour les procédures stockées. http://forum.liquibase.org/topic/configurable-databasechangelog-table-name. Je travaille toujours à déterminer la ligne de commande. –