Flyway-当架构具有比最新可用迁移更新的版本时,如何解决问题

时间:2019-01-17 09:49:40

标签: flyway

我是新手,并且在致电{ "manifest_version": 2, "name": "Handcash handle converter", ... "browser_action": { "default_title": "Handcash handle converter", "default_popup": "./popup/popup.html", "default_icon": { "48": "handcash48.png", "64": "handcash64.png", "128": "handcash128.png" } }, ... } 时收到此警告:

flyway migrate

在具有迁移的目录中,我可以进行到36的迁移,但是接下来的所有迁移都不会应用于数据库。当我调用WARNING: Schema 'schema' has a version (34) that is newer than the latest available migration (0) !时,直到34的所有迁移状态都设置为FUTURE。仅遗漏一个是29。请问是什么原因和解决方法(清除数据库除外)?

我认为发生这种情况是因为我正在修复29,并且从flyway数据库表中删除了此迁移,并且还恢复了它对db的影响。有可能解决这个问题,这是什么意思?

1 个答案:

答案 0 :(得分:1)

免责声明

  

这很危险,但是可以选择。

执行以下步骤。

  1. 备份您的架构。至少备份您的$fileType = strtolower(pathinfo($targetFilePath,PATHINFO_EXTENSION)); $allowTypes = array('jpg','png','jpeg','gif','pdf'); if(in_array($fileType, $allowTypes)){ move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath); }
  2. 删除schema_version中版本高于29(或与版本29相比最近的迁移)的所有记录。请参考您的迁移文件夹。
  3. 运行schema_version,这将尝试重新创建迁移版本29,但是由于29版本的内容已应用于数据库,因此它可能会失败。如果失败,请更新此迁移记录以将列成功设置为1。
  4. flyway migrate的备份中复制数据,以插入29版以上的所有迁移记录。

希望这会有所帮助。