用途:处理 SpacetimeDB 数据库模块的生命周期与迁移工作。模块是代码与模式定义;数据库是按名称或身份发布的实例。发布命令 spacetime publish <DATABASE_NAME> 会构建、上传、若有 init 则运行,并开始提供模块服务。对已存在的数据库发布时,会尝试自动迁移,原子热替换模块并保持活动客户端连接。公共模式、reducer、procedure 或 view 表面变化后,需重新生成并发送客户端绑定。Reducer 在自动事务中运行;procedure 在需要写入数据库时手动开启事务。
迁移检查清单。安全:增加表、增加索引、增加或删除自增注解、将私有表设为公共、增加 reducer、删除唯一约束。可能破坏性:在末尾增加带默认值的列、修改或删除 reducer、将公共表设为私有、删除主键、删除订阅使用的索引。自动迁移禁止:删除表,删除/重命名/重排/更改现有列,增加无默认值的列,在中间增加列,更改 schedule 表状态,增加唯一或主键约束。
开发期间可用 --delete-data 重置数据,除非有意永久丢失数据,否则不要用于生产。对生产中的禁止性变更,采用增量迁移策略:增加新形态、双写/回填、迁移客户端、之后再淘汰旧形态。
指导:更改表形态、名称、索引、约束或公共/私有可见性前,检查迁移安全性。模式定义请加载 spacetimedb-tables;reducer 事务行为请加载 spacetimedb-reducers。参考文档包括 databases.md(概览与学习路径)、databases-developing.md(本地开发)、databases-building-publishing.md(构建与发布)、databases-automatic-migrations.md 与 databases-incremental-migrations.md(迁移规则)、databases-transactions-atomicity.md(事务行为)、databases-cheat-sheet.md(密集语法示例)。