先给结论:不要按“字段在新系统里有没有对应位置”决定保留,而要按“这个字段是否仍在驱动页面输出、查询条件或人工流程”决定。如果迁移脚本报出大量字段丢失,先别急着补字段,先抽样核对旧页面实际渲染结果,区分“数据没人用”和“数据被间接引用”。
迁移时常见一种反直觉结果:旧库里有几十个字段没有进入新结构,但前台页面、列表和详情页看起来都正常。这并不自动说明那些字段可以删。可能的解释至少有两种。
这两种解释对应完全不同的处理方式:前者可以归档不迁,后者必须补结构或改写依赖逻辑。
要判断属于哪一种,可以从三个可核对的方向取证,而不是凭字段名猜测。
在旧代码库中检索字段名,不只看模板文件,也看查询构造、排序参数和后台筛选条件。如果字段只出现在建表语句和迁移脚本里,没有任何读取路径,偏向解释一;如果它出现在查询条件或排序中,即使前台不显示,也偏向解释二。
选取旧系统中使用该字段较多的页面,与迁移后的页面逐项比对。重点看筛选结果数量、排序顺序和空值展示。假设某字段用于“是否置顶”的排序,迁移后页面仍能打开,但置顶项混在普通项中,这就是间接引用失效的信号。
询问或观察后台使用者是否仍在填写、筛选或导出该字段。如果连续一段时间无人维护,且没有自动写入,它更可能是废弃字段;如果它仍被手工录入并影响后续发布流程,就不能只因为新系统没有对应位置而丢弃。
取证之后,执行一个具体动作:把待迁字段冻结为只读,禁止新写入,同时保留旧库快照。冻结后观察一个完整的发布周期,记录哪些页面或流程出现异常。这个动作的结果会直接影响下一步。
冻结的价值在于把“字段丢失”从迁移事故变成一次可观察的验证。它比直接补字段更省事,也比直接删除更安全。
假设旧系统有一个 is_top 字段,新系统没有对应列。迁移后首页列表仍能打开,但编辑反馈“以前置顶的内容现在找不到了”。这时不要立刻在新系统加回同名字段,而要先确认旧查询是否用 is_top 参与排序。如果是,保留项应是“排序能力”,而不是字段本身:可以在新系统中用发布时间加人工权重实现,也可以新增一个排序字段。选择哪一种,取决于编辑是否还需要手工调整顺序。若需要,就保留可人工干预的排序字段;若不需要,用自动规则即可。
这套方法适用于旧系统仍可读取、迁移过程可暂停、且能观察到真实使用行为的场景。如果旧系统已经无法访问,或者迁移必须一次性完成,就只能依赖代码检索和文档记录,无法用冻结观察来验证。此时应把不确定的字段全部迁入过渡表,待上线后再按实际引用情况逐项清理,而不是在迁移当下做不可逆的删除决定。