💡
原文英文,约700词,阅读约需3分钟。
📝
内容提要
我的团队在Fresha需要在现有表中添加一个支付方式类型列。由于记录量超过5000万且读写频繁,迁移必须小心进行且无停机。添加类型列时使用了NOT NULL约束和默认值'card',PostgreSQL 11+版本确保添加默认值不会重写表。删除默认值不会锁定表,但Rails的partial_inserts选项可能导致插入失败,因此需谨慎检查。
🎯
关键要点
- Fresha团队需要在现有表中添加支付方式类型列,迁移必须小心进行且无停机。
- 迁移步骤包括添加类型列、确保应用程序明确指定类型属性、删除默认值。
- 在PostgreSQL 11+中,添加静态默认值是安全的,不会重写表。
- 添加带有NOT NULL约束的默认值也是安全的,PostgreSQL会使用默认值进行验证。
- 删除默认值是元数据操作,不会锁定表,现有行不受影响。
- Rails的partial_inserts选项可能导致插入失败,需谨慎检查。
- Rails 7及更新版本默认禁用partial_inserts选项,需确认应用程序设置。
🏷️
标签
➡️