play框架运行演变的所有DOWN脚本,然后以相反的顺序应用所有UP,从而破坏表格

问题描述 投票:0回答:1

我正在使用游戏框架,想知道进化中的问题。更改模型后(例如添加字段),我准备了适当的sql脚本(用于UP和DOWN),例如3.sql(假设我已经有2个Evolution脚本)并放在相关文件夹中。

但是剧本向我显示了此消息:

数据库“默认”需要发展!

#!!!警告!该脚本包含可能发生的DOWNS演变破坏性的

#--- Rev:2,Downs-3ee3d8e

ALTER TABLE my_table DROP COLUMN低优先级;

#--- Rev:1,Downs-4f92dc6

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

#--- Rev:1,Ups-5501951

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

ALTER TABLE my_tableADD COLUMN low_priority tinyint(1)默认0不为null;

#--- Rev:3,Ups-397ada5 ALTER TABLE my_table CHANGE COLUMNlow_priority lowpriority TINYINT(1)NOT NULL缺省'0';

为什么播放(实际上是其ORM:EBean)的行为如此?它应该只运行3.sql(最新的演变脚本)的“ UP”,而不回滚历史记录!

P.S。我正在谈论我的开发人员实例(因为PROD中没有发生上述情况)。但是由于某些原因,我必须在自己的开发数据库中保存一些繁重的数据,并且每次真正都要花时间进行“备份和还原”。

playframework orm ebean playframework-2.3
1个回答
0
投票

我确定了为什么会这样。据此link

在游戏2.2中,从头到尾检查不同的演变:1.sql是针对db中的Evolution 1进行检查的,然后针对2、3进行检查,依此类推。如果某个对不同,则所有从不同的进化都需要降级和升级。在以前的游戏进化版本中是从最后一个到第一个相等的,所以如果相等,未检查其他演变。

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

© www.soinside.com 2019 - 2024. All rights reserved.