2013-11-04 72 views
1

我有一個hsqldb,其中包含SET DATABASE TRANSACTION CONTROL MVLOCKS。 我試圖刪除列:HSQLDB:無法刪除列

ALTER TABLE CSUSER DROP COLUMN PASSWORD 

,但我有此錯誤:

Error: Error while executing action. Reason: java.sql.SQLIntegrityConstraintViolationException: integrity constraint violation: unique constraint or index violation; SYS_PK_10426 table: CSUSER in statement [ALTER TABLE CSUSER DROP COLUMN PASSWORD]

如果我設置SET DATABASE TRANSACTION CONTROL LOCKS,我沒有錯誤,並且列被刪除。

問題是我不得不使用MVLOCKS,而且我沒有在這個列上發現任何約束。

有沒有人有想法?

回答

0

使用集SET DATABASE TRANSACTION CONTROL LOCKS,刪除列,然後使用 SET DATABASE TRANSACTION CONTROL MVLOCKS

錯誤的原因是存在不完整和未提交的事務。您需要提交所有事務。

因此在執行大規模數據和模式更改操作之前,請提交任何事務。

+0

謝謝fredt,但是這個語句是在用戶啓動的遷移過程中執行的,如果我在刪除列之前添加一個SET DATABASE TRANSACTION CONTROL LOCKS,用戶將產生這樣的錯誤:java.sql.SQLException:invalid transaction state:聲明中的活動SQL事務[SET DATABASE TRANSACTION CONTROL LOCKS] – user2318955

+0

在提交事務後執行所有遷移。 – fredt