When trying to generate changeset from data base get error

It looks like there is a column liquibase thinks is boolean but contains a value of “3”. For boolean values, it just expects 0 or 1.


Nathan

./liquibase --driver=com.mysql.jdbc.Driver   --username=XXXX–password=XXXX–url=“jdbc:mysql://XXXX:3306/ibp-dev”  --classpath=./mysql-connector-java-5.1.18-bin.jar  --logLevel=debug --changeLogFile=/root/changelog.xml  --databaseClass=liquibase.database.core.MySQLDatabase --logFile=log.txt generateChangeLog

Liquibase Update Failed: Unknown bit value: 3
SEVERE 12/5/11 2:42 AM:liquibase: Unknown bit value: 3
liquibase.exception.DatabaseException: java.text.ParseException: Unknown bit value: 3
    at liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.getColumnTypeAndDefValue(JdbcDatabaseSnapshotGenerator.java:402)
    at liquibase.snapshot.jvm.MySQLDatabaseSnapshotGenerator.getColumnTypeAndDefValue(MySQLDatabaseSnapshotGenerator.java:118)
    at liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.readColumn(JdbcDatabaseSnapshotGenerator.java:202)
    at liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.readColumns(JdbcDatabaseSnapshotGenerator.java:335)
    at liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.createSnapshot(JdbcDatabaseSnapshotGenerator.java:244)
    at liquibase.snapshot.DatabaseSnapshotGeneratorFactory.createSnapshot(DatabaseSnapshotGeneratorFactory.java:69)
    at liquibase.diff.Diff.compare(Diff.java:63)
    at liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLog(CommandLineUtils.java:145)
    at liquibase.integration.commandline.Main.doMigration(Main.java:719)
    at liquibase.integration.commandline.Main.main(Main.java:133)
Caused by: java.text.ParseException: Unknown bit value: 3
    at liquibase.database.typeconversion.core.AbstractTypeConverter.convertToCorrectObjectType(AbstractTypeConverter.java:105)
    at liquibase.database.typeconversion.core.AbstractTypeConverter.convertDatabaseValueToObject(AbstractTypeConverter.java:28)
    at liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.getColumnTypeAndDefValue(JdbcDatabaseSnapshotGenerator.java:400)
    … 9 more

Problem column is tinyint, which may have values from -127 to 127, but got default 3. Anything we can do short of changing datatype to get it working?


Thanks

I will try to recreate your problem, but I think changing the datatype will probably be the quickest way to get you going. 

I see the MySQLTypeConverter returning the TINYINT(1) as the datatype for Boolean type.  Not exactly sure why that converter returns the TINYINT instead of the Boolean type, but the getBooleanType() method from the AbstractTypeConverter was overridden to return the TINYINT instead of the Boolean type, which would be returned by the AbstractTypeConverter.