ActiveObjects实体架构版本存储位置与迁移回滚问题咨询
ActiveObjects迁移版本存储与回滚方法
AO的模型版本号存储在自动生成的
AO_<哈希>_VERSION表中,其中<哈希>是由你的插件Key生成的唯一标识。你可以通过数据库中所有以AO_开头的表定位它——通常和你的AO实体表共享同一个哈希前缀(比如你的实体表是AO_1A2B3C_MY_ENTITY,那版本表就是AO_1A2B3C_VERSION)。这个表只有一行数据,VERSION字段的值就是getModelVersion()返回的当前版本号。回滚迁移的步骤:
- 先备份目标数据库,避免操作失误导致数据丢失
- 找到对应的
AO_<哈希>_VERSION表,将其中的版本号手动修改为你需要回滚到的旧版本号 - 确保你的
ActiveObjectsUpgradeTask实现了降级逻辑:AO默认只处理版本升级的正向迁移,回滚需要你在任务中判断版本变化方向,编写对应的数据反向迁移代码(比如从v5回滚到v3时,处理新增字段的删除、数据结构的反向调整等) - 重启应用,AO会检测到版本号下降,触发对应版本区间的迁移逻辑(如果你的任务已处理降级)
注意事项:
- 不要直接修改版本号而不处理数据回滚,否则会导致AO实体与数据库结构不兼容,引发异常
- 若你的迁移任务未实现降级逻辑,需要先补充代码再执行回滚操作
内容的提问来源于stack exchange,提问作者StreamThread
相关产品推荐
相关产品推荐

