2012-04-09 51 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