Playframework play框架运行所有演进脚本,然后以相反的顺序应用所有UPs,从而破坏表

Playframework play框架运行所有演进脚本,然后以相反的顺序应用所有UPs,从而破坏表,playframework,orm,ebean,playframework-2.3,Playframework,Orm,Ebean,Playframework 2.3,我正在使用play框架,并想知道进化中的一个问题。在我更改了模型(例如添加一个字段)之后,我准备了适当的sql脚本(用于上下波动),例如3.sql(假设我已经有2个演化脚本),并将其放入相关文件夹中 但该剧向我传达了这样一个信息: 数据库“默认”需要改进 #!!!警告此脚本包含可能发生的变化 破坏性 #---版本:2,唐斯-3ee3d8e ALTER TABLE my_TABLE DROP COLUMN low_priority #---版本:1,唐斯-4f92dc6 [删除所有表的长脚本!]

我正在使用play框架,并想知道进化中的一个问题。在我更改了模型(例如添加一个字段)之后,我准备了适当的sql脚本(用于上下波动),例如3.sql(假设我已经有2个演化脚本),并将其放入相关文件夹中

但该剧向我传达了这样一个信息:

数据库“默认”需要改进

#!!!警告此脚本包含可能发生的变化 破坏性

#---版本:2,唐斯-3ee3d8e

ALTER TABLE my_TABLE DROP COLUMN low_priority

#---版本:1,唐斯-4f92dc6

[删除所有表的长脚本!]

#---版本:1,Ups-5501951

[创建表格的长脚本]#---Rev:2,Ups-3ee3d8e

ALTER TABLE my_TABLE添加列低优先级tinyint(1)默认值0 不为空

#---版本:3,Ups-397ada5 ALTER TABLE my_TABLE CHANGE列 低优先级lowpriority TINYINT(1)不为空默认值“0”

为什么play(实际上是它的ORM:EBean)会这样?它应该只运行3.sql(最后一个进化脚本)的“UPs”,而不是通过历史回滚


另外,我正在谈论我的dev实例(因为上面的情况在PROD中没有发生)。但由于某些原因,我的开发数据库中必须有一些大量数据,每次执行“备份和恢复”都需要时间。

我找到了发生这种情况的原因。据此:

在游戏2.2中,从第一个到最后一个检查不同的进化:第一个 1.sql与db中的evolution 1、2、3等进行对比检查。如果某一对不同,所有来自不同的进化将需要 被降级和升级。在以前版本的游戏进化中 从最后一个到第一个都是相等的,所以如果你最后的进化是 同样,其他的进化没有被检查

在这两个变化之后,游戏发现了第一个不同的进化 空白,并要求重新应用它们


我发现了为什么会发生这种情况。据此:

在游戏2.2中,从第一个到最后一个检查不同的进化:第一个 1.sql与db中的evolution 1、2、3等进行对比检查。如果某一对不同,所有来自不同的进化将需要 被降级和升级。在以前版本的游戏进化中 从最后一个到第一个都是相等的,所以如果你最后的进化是 同样,其他的进化没有被检查

在这两个变化之后,游戏发现了第一个不同的进化 空白,并要求重新应用它们