SuperAPI AI 工具集

dbmate

数据与分析

查看项目

更新于 10-15 23:44

技能介绍

用途:本技能提供在项目中使用 dbmate 管理数据库迁移的完整操作说明,面向 sqlite、postgres、mysql 三种引擎。

创建迁移:新建迁移时遵循 /migrate-new 工作流,主要命令为:dbmate --migrations-dir db/migrations/<engine> new "migration_name",其中 <engine> 替换为 sqlite、postgres 或 mysql。

编写迁移:迁移文件以 .sql 形式存放在 db/migrations/<engine>/ 下,每个文件必须包含 -- migrate:up 和 -- migrate:down 两个部分,分别写入应用变更和回滚变更的 SQL。注意不要把 SQL 包在 BEGIN/COMMIT 块中,dbmate 会自动为每个迁移包裹事务,手动添加事务块会导致错误甚至数据库状态不一致。

SQL 规范:尽量使用 IF NOT EXISTS 等写法提升幂等性(如 CREATE TABLE IF NOT EXISTS ...)。不要手动编辑 db/schema/ 下的文件,它们是自动生成的。SQL 需针对具体数据库引擎定制:PostgreSQL 使用合适类型(如 TEXT、JSONB);MySQL 使用兼容类型(如用 LONGTEXT 存类似 JSON 的数据);SQLite 需注意其对 ALTER TABLE 的支持有限。

应用迁移:开发环境使用 ./dev-scripts/migrate-all.py,该脚本会为全部引擎(PostgreSQL、MySQL、SQLite)应用迁移,并更新 db/schema/ 下的 schema 文件。

限制:资料未提供安装方式、版本要求、生产环境迁移流程、配置细节及回滚命令等内容。