亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果表存在則跳過 liquibase 更改

如果表存在則跳過 liquibase 更改

GCT1015 2023-06-14 14:32:03
liquibase 的新手。我有一個由休眠管理的現有架構。我現在需要刪除一些表,我正在使用 liquibase。我寫了一個成功刪除表的配置。但我希望檢查僅在表存在時運行,因為新安裝的系統不會有表,因為休眠映射對象不再存在。我試圖添加一個先決條件。但是,我的日志仍然表明 liquibase 失敗,因為它試圖刪除該表但它不存在。我做錯了什么?我正在使用 Spring Boot / JavadatabaseChangeLog:  - preConditions:      on-fail: mark_ran      on-error: mark_ran      tableExists:        tableName: some_old_table        schemaName: public  - changeSet:      id: 01_del_old_table      author: some-dev-01      comment: Remove old table      changes:        - dropTable:            tableName: some_old_table日志中的錯誤:表 public.some_old_table 不存在 ...PreconditionFailedException這就像 ti 正在檢查先決條件……但仍然沒有通過。也試過databaseChangeLog:  - changeSet:      id: zzchange-1.0-remove-xczczxc      author: zzzz      comment: Remove some_old_table table - no longer needed      preConditions:        on-fail: mark_ran        tableExists:          tableName: some_old_table      changes:        - dropTable:            tableName: some_old_table
查看完整描述

3 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

問題在于on-fail屬性拼寫不正確。on-fail應該是onFail。

最好將先決條件置于特定更改集的范圍內,并且注釋應該在先決條件之后進行,盡管這不是這里的問題。


databaseChangeLog:

? - changeSet:

? ? ? id: zzchange-1.0-remove-xczczxc

? ? ? author: zzzz

? ? ? preConditions:

? ? ? ? onFail: mark_ran

? ? ? ? tableExists:

? ? ? ? ? tableName: some_old_table

? ? ? comment: Remove some_old_table table - no longer needed

? ? ? changes:

? ? ? ? - dropTable:

? ? ? ? ? ? tableName: some_old_table


查看完整回答
反對 回復 2023-06-14
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

在你的第二次嘗試中,在你的先決條件之后發表你的評論


databaseChangeLog:

? - changeSet:

? ? ? id: zzchange-1.0-remove-xczczxc

? ? ? author: zzzz

? ? ? preConditions:

? ? ? ? on-fail: mark_ran

? ? ? ? tableExists:

? ? ? ? ? tableName: some_old_table

? ? ? comment: Remove some_old_table table - no longer needed

? ? ? changes:

? ? ? ? - dropTable:

? ? ? ? ? ? tableName: some_old_table


我不太確定為什么您的第一次嘗試行不通,但是我認為擁有全局先決條件不是一個好主意。這是因為他們在同一文檔中所說的:


Preconditions at the changelog level apply to all changesets, not just those listed in the current changelog or its child changelogs.



查看完整回答
反對 回復 2023-06-14
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

請使用以下語法跳過當前表中的更改

CREATE table IF NOT EXISTS


查看完整回答
反對 回復 2023-06-14
  • 3 回答
  • 0 關注
  • 395 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號