Search code examples
sql-updaterefactoringliquibasedropwizard

Liquibase - How to skip changesets that have been executed


I have a dropwizard application backed by a mysql database. I am using the liquibase wrapper for database migrations

To start with I used the db dump command to autogenerate the migrations.xml file for me.

Now I am working on refactoring the database and I want to be able to update specific column names and names of tables.

I use the preconditions to skip the already generated tables to skip the createTable commands

<preConditions onFail="MARK_RAN">
    <not>
        <tableExists tableName="myTable" />
    </not>
</preConditions>

How do I now skip the execution of the primary key and foreign key contraints? Is there a precondition at the changelog level that I can use to indicate "skip already executed changesets'? Or do I just create a new migrations.xml? Will this delete the existing data?


Solution

  • Check this for preconditions http://www.liquibase.org/documentation/preconditions.html

    You can't tell liquibase to skip all changesets that are executed, but you can just exclude that file (you have to save migration.xml in some other folder (archive i.e), because someday you can create db structure from scratch and you will need that changesets)

    That means that you can just create new .xml file with changesets that you want to be executed. Liquibase wont delete any data, it will work only with xml files you give to it.