2009-12-18 56 views
1

我需要通過螞蟻通過彈簧到執行相同的DB-更新日誌,然後。我希望螞蟻能夠運行更新日誌,當春天運行時,它不會做任何事情,只是正常停止。 Ant成功運行db-changelog,然後彈出運行,但它引發異常,是堆棧跟蹤的一部分:故障運行liquibase具有不同劑

原因:liquibase.exception.JDBCException:執行SQL時出錯CREATE TABLE操作(action_id int8 NOT NULL,操作名VARCHAR 255),version_no INT8,reason_required BOOLEAN,comment_required BOOLEAN,step_id的數據類型INT8,約束action_pkey PRIMARY KEY(的action_id)): 所引發:錯誤執行的SQL CREATE TABLE動作(的action_id INT8 NOT NULL,ACTION_NAME VARCHAR(255),version_no INT8,reason_required布爾,comment_required布爾,step_id的數據類型INT8,約束action_pkey PRIMARY KEY(的action_id)): 產生的原因:ERROR:關於 「動作」 已經存在;嵌套的例外是org.springframework.beans.factory.BeanCreationException ....

任何幫助將非常感激。

Regards,

回答

2

聽起來好像它試圖再次運行更新日誌。 changeLog中的每個changeSet都由id,author和changelog路徑/文件名的組合來標識。如果你運行「select * from databasechangelog」,你可以看到使用的值。

您的問題可能是您正在從不同的螞蟻和春季引用changelog文件生成,因此不同的文件名值。通常你會想它們包括在類路徑,以便無論身在何處,以及如何運行這些它們具有相同的路徑(如「com /例子/ db.changelog.xml」)

+0

Thanks Nathan,這真的是問題所在。但是我已經改變了實現,以在春季運行更新日誌,以避免進一步頭痛:D。 – 2010-03-08 17:38:03

0

我碰到了同樣的問題,是能夠通過修改DATABASECHANGELOG的文件列來修復它以引用spring資源路徑。在我的情況下,我在WEB-INF目錄下使用了一個ServletContextResource:

update DATABASECHANGELOG set FILENAME = 'WEB-INF/path/to/changelog.xml' where FILENAME = 'changelog.xml'