Firebird 2.1.x
Jaybird 2.1.1
Liquibase 1.9.4
I’m having difficulty getting Liquibase’s dropAll to work, reliably, against my Firebird database. It randomly fails with something like the following:
[java] Migration Failed: GDS Exception. 335544351. unsuccessful metadata update [java] object INDEX is in use [java] Reason: unsuccessful metadata update [java] object INDEX is in use. For more information, use the --logLevel flag) [java] Oct 13, 2009 4:40:05 PM liquibase.commandline.Main main [java] SEVERE: GDS Exception. 335544351. unsuccessful metadata update [java] object INDEX is in use [java] Reason: unsuccessful metadata update [java] object INDEX is in use [java] liquibase.exception.JDBCException: Error executing SQL ALTER TABLE CONFIG_ITEM_HISTORY DROP CONSTRAINT FKF0A31525DF74E053 [java] at liquibase.database.template.JdbcTemplate.execute(JdbcTemplate.java:55) [java] at liquibase.database.template.JdbcTemplate.execute(JdbcTemplate.java:86) [java] at liquibase.database.AbstractDatabase.dropDatabaseObjects(AbstractDatabase.java:846) [java] at liquibase.Liquibase.dropAll(Liquibase.java:449) [java] at liquibase.Liquibase.dropAll(Liquibase.java:436) [java] at liquibase.commandline.Main.doMigration(Main.java:613) [java] at liquibase.commandline.Main.main(Main.java:97) [java] at com.... [java] Caused by: org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544351. unsuccessful metadata update [java] object INDEX is in use [java] Reason: unsuccessful metadata update [java] object INDEX is in use [java] at org.firebirdsql.jdbc.InternalTransactionCoordinator$AutoCommitCoordinator.statementCompleted(InternalTransactionCoordinator.java:261) [java] at org.firebirdsql.jdbc.InternalTransactionCoordinator.statementCompleted(InternalTransactionCoordinator.java:55) [java] at org.firebirdsql.jdbc.AbstractStatement.notifyStatementCompleted(AbstractStatement.java:254) [java] at org.firebirdsql.jdbc.AbstractStatement.notifyStatementCompleted(AbstractStatement.java:249) [java] at org.firebirdsql.jdbc.AbstractStatement.execute(AbstractStatement.java:590) [java] at liquibase.database.template.JdbcTemplate$1ExecuteStatementCallback.doInStatement(JdbcTemplate.java:78) [java] at liquibase.database.template.JdbcTemplate.execute(JdbcTemplate.java:48) [java] ... 9 more
or this:
[java] Migration Failed: GDS Exception. 335544351. unsuccessful metadata update [java] ERASE RDB$RELATION_CONSTRAINTS failed [java] action cancelled by trigger (1) to preserve data integrity [java] Cannot delete PRIMARY KEY being used in FOREIGN KEY definition.. For more information, use the --logLevel flag) [java] Oct 13, 2009 4:41:00 PM liquibase.commandline.Main main [java] SEVERE: GDS Exception. 335544351. unsuccessful metadata update [java] ERASE RDB$RELATION_CONSTRAINTS failed [java] action cancelled by trigger (1) to preserve data integrity [java] Cannot delete PRIMARY KEY being used in FOREIGN KEY definition. [java] liquibase.exception.JDBCException: Error executing SQL DROP TABLE NETWORK_ADAPTER [java] at liquibase.database.template.JdbcTemplate.execute(JdbcTemplate.java:55) [java] at liquibase.database.template.JdbcTemplate.execute(JdbcTemplate.java:86) [java] at liquibase.database.AbstractDatabase.dropDatabaseObjects(AbstractDatabase.java:846) [java] at liquibase.Liquibase.dropAll(Liquibase.java:449) [java] at liquibase.Liquibase.dropAll(Liquibase.java:436) [java] at liquibase.commandline.Main.doMigration(Main.java:613) [java] at liquibase.commandline.Main.main(Main.java:97) [java] at com.... [java] Caused by: org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544351. unsuccessful metadata update [java] ERASE RDB$RELATION_CONSTRAINTS failed [java] action cancelled by trigger (1) to preserve data integrity [java] Cannot delete PRIMARY KEY being used in FOREIGN KEY definition. [java] at org.firebirdsql.jdbc.AbstractStatement.execute(AbstractStatement.java:586) [java] at liquibase.database.template.JdbcTemplate$1ExecuteStatementCallback.doInStatement(JdbcTemplate.java:78) [java] at liquibase.database.template.JdbcTemplate.execute(JdbcTemplate.java:48) [java] ... 9 more
It tends to fail on some machines very regularly and on others almost never. I can make it fail if I use FlameRobin and have it connected to the database when I try dropAll; however, it also fails when nothing is connected to the database.
I Googled a bit, but didn’t come up with much. The only lead I actually have is that it could have something to do with improper use of transactions.
- Is anyone else using Firebird/Liquibase?
- If so, is anyone seeing similar behavior?
- Does anyone have any ideas for fixing this?
Thanks,
Jamie