Liquibase和从HSQL 1.8.0.x迁移到HSQL 2.2.8不能删除列

时间:2012-04-09 05:13:47

标签: hsqldb liquibase

我一直在运行Liquibase用于mySQL(用于真实的东西)和HSQLDB(用于测试)。我最近不得不更新我们的Hibernate版本,这需要我将我们的HSQLDB版本更新到2.x.x - 我选择了最新版本。现在我至少有一个运行良好的变更集,但现在给了我:

  

执行SQL ALTER TABLE时出错app_user DROP COLUMN name:column is   引用于:PUBLIC.SYS_CT_10302语句[ALTER TABLE app_user   DROP COLUMN名称]

列“name”在删除时对它(以及另一列)有唯一约束,所以我怀疑这是问题所在。但是,唯一约束没有名称,所以我没有任何成功,首先放弃它。

1 个答案:

答案 0 :(得分:2)

您可以通过查询INFORMATION_SCHEMA:

找到UNIQUE约束的名称
SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE COLUMN_NAME = 'NAME' AND TABLE_NAME = 'APP_USER'

ALTER TABLE APP_USER DROP CONSTRAINT ...

或者,您可以将列与任何使用它的约束一起删除:

ALTER TABLE APP_USER DROP COLUMN NAME CASCADE