I am looking into using liquibase for our project. We currently use Firebird 2.x for development. We set the default character set in Firebird to UTF8. This is causing liquibase some problems.
When liquibase is run in update mode for the first time, the following error is generated:
Migration Failed: GDS Exception. 335544351. unsuccessful metadata update
key size exceeds implementation restriction for index “PK_DATABASECHANGELOG”
In doing some research, it seems liquibase limits index key size to a quarter of the page size (http://www.firebirdfaq.org/faq211/).
In our case, the page size is set to 4k, which would give a total key size of 1020 bytes.
The DATABASECHANGELOG table has three columns making up the primary key:
and since the database defaults to UTF8, the total key size is 1632 bytes. Thus the error message. :(
We need to have the DB default to UTF8. So is there some setting that will instruct liquibase to use ISO8859_1 as the charset when creating these columns?
One option might be to create this table outside of liquibase. In development mode where you want to drop and recreate the DB many times, this isn’t ideal. Is their a better way?