1. 程式人生 > >Flyway中sql指令碼修改導致的錯誤

Flyway中sql指令碼修改導致的錯誤

  Flyway是一個簡單開源資料庫版本控制器(約定大於配置),主要提供migrate、clean、info、validate、baseline、repair等命令(Flyway java基本知識:https://blog.csdn.net/tanghin/article/details/51264795)。

  使用該工具,配置好資料庫指令碼,在專案執行的時候即可將資料庫指令碼執行到資料庫中,同時會在資料庫表schema_version中增加相應的記錄(若第一次執行,則會建立該表)。

  今天重新匯入了專案,在執行專案的時候報錯: org.springframework.beans.factory.BeanCreationException: Errorcreating bean with name 'flyway' defined in URL[file:/E:/gerp/war/target/gerp/WEB-INF/classes/spring/spring-jdbc.xml]:Invocation of init method failed; nested exception isorg.flywaydb.core.api.FlywayException: Validate failed: Detected appliedmigration not resolved locally: 18.616之類的。

  通過查詢資料(http://blog.didispace.com/spring-boot-flyway-db-version/)發現,Flyway執行指令碼的時候會檢查指令碼是否有改動,並對其進行校驗。若改動,則會校驗錯誤,報錯。

  後嘗試把資料庫表中的schema_version刪除,但雖然能夠執行指令碼,但若存在一些不能重複操作的sql(如:建表語句),依然會報錯。

  特此,記錄一下。