rollback fails for unknown reason

I tried this once with 1.9.5, and once with 2.0rc1. 2.0rc1 gives a lot more information, but the result is the same.

I created a new, empty database; I wanted all logs to be done through liquibase, back to the first creation. (It’s an early phase, for at least a couple of databases I could do that.)

If you look below, you see that it fails generating the SQL for the rollback script. I’m fairly new to this - am I missing something basic?

My script creates a table with two columns (for 2.0rc1):

<?xml version="1.0" encoding="UTF-8"?>
http://www.liquibase.org/xml/ns/dbchangelog"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">

    
        
        	
        		
        	
            
                
            
        
    

With that, I run it and here’s what I see:

F:\Documents and Settings\me\My Documents\projects\liquibase-2.0-rc1>liquibase --driver=com.mysql.jdbc.Driver --changeLogFile=test.xml --url="jdbc:mysql://192.168.3.101/test" --username=utest --password="test" --logLevel="debug" update
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateDatabase: Missing dependency org/hibernate/cfg/Configuration
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateGenericDialect: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.snapshot.core.HibernateDatabaseSnapshotGenerator: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateDatabase: Missing dependency org/hibernate/cfg/Configuration
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateGenericDialect: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.snapshot.core.HibernateDatabaseSnapshotGenerator: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateDatabase: Missing dependency org/hibernate/cfg/Configuration
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateGenericDialect: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.snapshot.core.HibernateDatabaseSnapshotGenerator: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateDatabase: Missing dependency org/hibernate/cfg/Configuration
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateGenericDialect: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.snapshot.core.HibernateDatabaseSnapshotGenerator: Missing dependency org/hibernate/dialect/Dialect
DEBUG 10/17/09 12:15 AM:liquibase: Create Database Lock Table
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateDatabase: Missing dependency org/hibernate/cfg/Configuration
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateGenericDialect: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.snapshot.core.HibernateDatabaseSnapshotGenerator: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateDatabase: Missing dependency org/hibernate/cfg/Configuration
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateGenericDialect: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.snapshot.core.HibernateDatabaseSnapshotGenerator: Missing dependency org/hibernate/dialect/Dialect
DEBUG 10/17/09 12:15 AM:liquibase: Created database lock table with name: `DATABASECHANGELOGLOCK`
DEBUG 10/17/09 12:15 AM:liquibase: Lock Database
INFO 10/17/09 12:15 AM:liquibase: Successfully acquired change log lock
DEBUG 10/17/09 12:15 AM:liquibase: Create Database Change Log Table
INFO 10/17/09 12:15 AM:liquibase: Creating database history table with name: `DATABASECHANGELOG`
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateDatabase: Missing dependency org/hibernate/cfg/Configuration
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateGenericDialect: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.snapshot.core.HibernateDatabaseSnapshotGenerator: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateDatabase: Missing dependency org/hibernate/cfg/Configuration
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateGenericDialect: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.snapshot.core.HibernateDatabaseSnapshotGenerator: Missing dependency org/hibernate/dialect/Dialect
INFO 10/17/09 12:15 AM:liquibase: Reading from `DATABASECHANGELOG`
DEBUG 10/17/09 12:15 AM:liquibase: Running Changeset:test.xml::baseline::me::(Checksum: 2:2a3d7bbf13eca539f5a409469c2cf5b2)
DEBUG 10/17/09 12:15 AM:liquibase: Changeset test.xml::baseline::me::(Checksum: 2:2a3d7bbf13eca539f5a409469c2cf5b2)
DEBUG 10/17/09 12:15 AM:liquibase: Reading ChangeSet: test.xml::baseline::me::(Checksum: 2:2a3d7bbf13eca539f5a409469c2cf5b2)
DEBUG 10/17/09 12:15 AM:liquibase: Executing Statement: liquibase.statement.core.CreateTableStatement@19b04e2
DEBUG 10/17/09 12:15 AM:liquibase: Table baseline created
INFO 10/17/09 12:15 AM:liquibase: ChangeSet test.xml::baseline::me ran successfully in 0ms
DEBUG 10/17/09 12:15 AM:liquibase: Release Database Lock
INFO 10/17/09 12:15 AM:liquibase: Successfully released change log lock
LiquiBase Update Successful

F:\Documents and Settings\me\My Documents\projects\liquibase-2.0-rc1>liquibase --driver=com.mysql.jdbc.Driver --changeLogFile=test.xml --url="jdbc:mysql://192.168.3.101/test" --username=utest --password="test" --logLevel="debug" rollbacksql
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateDatabase: Missing dependency org/hibernate/cfg/Configuration
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateGenericDialect: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.snapshot.core.HibernateDatabaseSnapshotGenerator: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateDatabase: Missing dependency org/hibernate/cfg/Configuration
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.database.core.HibernateGenericDialect: Missing dependency org/hibernate/dialect/Dialect
WARNING 10/17/09 12:15 AM:liquibase: Could not configure extension class liquibase.snapshot.core.HibernateDatabaseSnapshotGenerator: Missing dependency org/hibernate/dialect/Dialect
LiquiBase Update Failed: Unknown Reason
SEVERE 10/17/09 12:15 AM:liquibase: Unknown Reason
java.util.NoSuchElementException
        at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
        at java.util.HashMap$KeyIterator.next(Unknown Source)
        at liquibase.integration.commandline.Main.doMigration(Main.java:696)
        at liquibase.integration.commandline.Main.main(Main.java:105)

The rollbackSql is failing because it is expecting a tag to rollback to.  You could also do rollbackToDateSQL or rollbackCountSQL.  There is a bug generating the error message.  I’ll fix it for 2.0. 

What your steps should be is:

  1. liquibase tag TAG_NAME
  2. liquibase update
  3. liquibase rollbackSQL TAG_NAME

Nathan