2012-04-09 50 views
0

我一直在为mySQL(用于真正的东西)和HSQLDB(用于测试)运行Liquibase。我最近不得不更新我们的Hibernate版本,这需要我将我们的HSQLDB版本更新到2.x.x - 我使用最新版本。现在,我至少有一个变更这是罚款之前运行,但现在给了我:Liquibase和从HSQL 1.8.0.x迁移到HSQL 2.2.8不能删除列

错误执行SQL ALTER TABLE APP_USER DROP列名:列 中引用:在声明中PUBLIC.SYS_CT_10302 [ALTER TABLE APP_USER DROP COLUMN name]

列“name”在它被删除时确实有一个唯一的约束(以及另一列),所以我怀疑是这个问题。但是,这个独特的约束没有名字,所以我也没有成功地放弃它。

回答

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 
+0

感谢。我发誓我尝试了CASCADE选项,并得到了一些在我的内存数据库中没有任何意义的权限问题,但是我再次尝试了它,并且它工作正常,所以它一定是其他错误。 – jhericks 2012-04-09 15:02:03