用途:在真实生产环境中审查或规划 Rails 迁移,确保 schema 变更安全。核心硬性规则:不得在同一次迁移中混合 schema 变更与数据回填;未完成回填前不得加 NOT NULL;删除列前必须先移除所有代码引用。
主要能力:识别数据库与表规模风险;将 schema 变更与回填分离;检查索引、约束、默认值、表重写的锁行为;规划应用代码与迁移代码的部署顺序;规划回滚或前向修复策略。项目若使用 strong_migrations 则遵循它,否则手动套用同等安全规则。
常见安全模式:加列先可空、后回填、最后加 NOT NULL;大表加索引用 algorithm: :concurrently(PG)或 :inplace(MySQL)并 disable_ddl_transaction!;回填用迁移事务外的批处理任务并限流;重命名列采用新增、复制、迁移调用方、删除旧列;加外键前先清理孤儿记录;删列前先移除代码引用。每一步需明确说明预期锁或表重写风险。
用法示例:并发索引需 disable_ddl_transaction!,因为并发建索引不能在事务内运行;可空列分三步部署(加列、迁移外回填、确认后加 NOT NULL);类型变更采用五步:加新列、双写、批量回填、校验后读新列、停写旧列并后续删除。
适用场景:生产 Rails 迁移的规划与代码审查,尤其涉及大表、索引、约束、列重命名与类型变更。
限制:资料未提供具体版本兼容细节、性能基准或收费信息;输出语言默认英文,除非明确要求其他语言。