【flyway】Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' def

报错如下:

"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默认数据表中的数据 插入到数据库对应表中 重启即可 ,例如 本地数据库中数据表如下

 

posted @ 2018-03-20 14:53  Angel挤一挤  阅读(1826)  评论(0编辑  收藏  举报