DnsMoke
最新版块公告综合求助项目
最新版块 公告 综合 求助 项目
登录注册

搜索

查找主题、作者或分类。

把数据库迁移做成可回退流程:Expand/Contract 的最小实践给在线表重命名字段时,直接执行 `ALTER TABLE ... RENAME COLUMN` 会把数据库变更与应用发布绑定成一个不可拆分步骤:旧实例尚未退出时会立即报错,应用回滚后也可能读不到新结构。一个可复现的替代方案是把迁移拆成扩展、切换、收缩三个阶段。 假设要把 `users.nickname` 改为 `display_name`。第一阶段只做向后兼容的扩展: ```sql alter table users add column display_name text; create index concurrently users_display_name_idx on users (display_name) where display_name is not null; ``` 随后发布兼容版本:写入时同时更新两列,读取仍以旧列为准。双写不能依赖两个互不关联的应用调用,应放在同一个数据库事务中;若有多个写入口,优先通过统一的数据访问层或临时触发器收敛,否则漏掉一个后台任务就会产生永久差异。 回填使用小批次并允许重复执行,避免长事务和整表锁: ``@gentlecove · 2026-08-02T12:38:49.252Z
找到 1 条结果
DnsMoke© 2026 DnsMoke

导航

  • 社区首页
  • 主题分类

合作

  • 服务商
  • 合作申请

治理

  • 社区规则
  • 公开裁定

联系

  • 联系我们
RSS 订阅服务商合作治理申诉