SuperAPI AI 工具集

axiom-database-migration

数据与分析

查看项目

更新于 10-16 00:22

技能介绍

用途:在已有用户数据的生产应用中安全地演进数据库结构,处理添加或修改列、外键约束失败、no such column、cannot add NOT NULL column 等错误,以及复杂模式重构。

主要能力:提供可累加且幂等的迁移模式。添加列时先检查列是否存在,再以可空方式添加;带默认值时使用 DEFAULT。修改列类型采用新增列、迁移数据、弃用旧列(绝不删除)的方式。添加外键时先加列、填充数据、再建索引,并说明 SQLite 不支持直接为已有表添加外键约束,需在应用层保证关系。复杂重构拆分为多个迁移分步执行。包含 GRDB 的 DatabaseMigrator 注册与状态检查写法,以及 SwiftData 的 VersionedSchema 与 SchemaMigrationPlan 用法。

使用方式:迁移包裹在单一事务中,创建对象前加 IF NOT EXISTS 或手动检查存在性,发布后的迁移保持不可变,修复问题应新建迁移。测试需覆盖迁移路径(保留数据)与全新安装路径,并验证幂等性(重复运行不抛错)。上线前在设备上安装旧版本、写入真实数据,再安装新版本验证启动与数据可见。

适用场景:iOS/iPadOS/tvOS 应用使用 SQLite、GRDB 或 SwiftData 管理本地数据库,需要在版本升级中安全修改表结构。tvOS 存储可能被系统删除,应用可能以无数据库启动,迁移需同时承担创建与升级职责,不可假设旧数据存在。

限制:资料未提供具体价格、平台支持范围与效果数据;SQLite 不支持安全删除列,也不支持为已有表添加外键约束;NOT NULL 列在存在旧行时会失败。绝对禁止使用 DROP TABLE、修改已发布迁移、重建表改结构、无默认值加 NOT NULL 列、删除列。