報錯如下:
"2018-03-20 12:58:09.585 WARN 18026 — [ restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Validate failed: Migration checksum mismatch for migration version 1.3 -> Applied to database : -1338247141 -> Resolved locally : 47067383"
解決方法:
原理:flyway是java 的sql migration庫 如果檢查resources/db/migrations/*.sql里邊已經遷移過的sql文件 checksum有變動 就會報錯
啟動之前將數據庫刪除 然后創建一個新的數據庫,這樣在啟動之后會自動創建數據庫中的表,保持一致 就不會報錯了
======================================================================
使用flyway進行數據庫字端更改【數據庫遷移】過程中 ,項目啟動出現這樣的問題
問題解析:
這里的將這個數據庫的字端 由字符串類型更改為整形過程中出現問題 ,是因為flyway要去做字端類型更改的時候更改失敗,是因為這個字端已經在本地自己更改過了,flyway再去更改發現這個字端已經是int類型的,所以沒辦法再將這個字端由字符串類型更改為int類型了
解決方法:
1.如果本地數據庫沒有特別的數據,可以將本地的數據庫刪除,新建同名的數據庫 重啟服務即可
2.如果是服務器端的數據庫 不能刪除數據庫 那可以先在本地進行第一步的操作 然后 將flyway默認數據表中的數據 插入到數據庫對應表中 重啟即可 ,例如 本地數據庫中數據表如下