官方公告

数据库改表,撤回方案要先准备

给数据库加一个字段,操作本身可能很短,后续影响却不只在这张表里。下单程序、后台报表、定时任务都可能读写同一份数据。准备改表时,请把使用这张表的程序一并列出来。

尤其是删除字段、缩短字段长度或更换字段类型,不宜只看一小份测试数据就执行。先用隔离的测试副本验证,保留原有结构和数据样本,检查历史记录、空值、特殊字符以及新旧程序同时运行时的结果。

把恢复步骤写到能实际执行

  • 记录改动前后的结构,确认哪些修改能够直接撤回,哪些需要另做数据转换。
  • 核对备份对应的时间点,并在测试环境验证恢复过程,不能只检查文件是否存在。
  • 约定出现什么问题就停止变更,由谁处理,以及变更后新增的数据怎样保留。

不要默认所有结构修改都能通过普通事务回滚。数据库类型、版本和具体语句不同,行为也可能不同;动手前应按实际环境核对。

如果新版本已经产生订单或写入业务记录,直接覆盖回旧备份可能丢掉这些新增内容。此时应先停止继续扩大改动,保存当前数据和日志,再决定修复现有结构、回退程序还是按方案恢复。

恢复字段名称、类型之后,原来已经丢失的字段值也不会自动回来。涉及删列或数据改写的方案,应把“恢复结构”和“恢复内容”分开说明,由熟悉这份数据的人确认。

改动结束后,除了确认程序能连接数据库,还要抽查新增、修改、查询和报表等实际操作。

返回官方公告