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