利用 Fitten Code 自动生成针对不同数据库(MySQL/PostgreSQL)的迁移脚本

2026-06-27AI75253

Fitten Code插件可一键生成MySQL与PostgreSQL双方言迁移脚本:需配置databases字段声明版本,用TypeScript interface定义模型(下划线命名),插件自动映射类型(如Date→TIMESTAMPTZ/DATETIME(3))、主键(AUTO_INCREMENT/IDENTITY)和布尔字段(TINYINT(1)/BOOLEAN),并支持校验与差异对比。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要为同一套业务模型快速生成适配 MySQL 和 PostgreSQL 的数据库迁移脚本,避免手动重写 SQL 时遗漏语法差异、类型映射错误或事务处理不一致的问题。

安装并配置 Fitten Code 插件

在 VS Code 扩展市场中搜索 “Fitten Code”,点击安装并重启编辑器。

打开命令面板(Ctrl+Shift+P / Cmd+Shift+P),输入 “Fitten: Init Config” 并执行→选择项目根目录→确认生成 .fitten/config.json。

编辑刚生成的 config.json,在 databases 字段中明确声明两种目标方言:【"mysql": {"version": "8.0"}, "postgresql": {"version": "15"}】,缺一不可,否则后续生成会默认降级为通用 SQL。

编写声明式数据模型

在项目中新建 models/user.ts 文件,用 TypeScript interface 描述实体:

interface User { id: number; name: string; email: string; created_at: Date; is_active: boolean; }

注意字段命名使用下划线分隔(如 is_active),Fitten Code 会据此自动适配 PostgreSQL 的 snake_case 风格;而 MySQL 模式下仍保持该命名,不转为 camelCase——这是它和 TypeORM 迁移工具的关键区别。

保存文件后,插件会在右下角弹出 “Model detected” 提示,此时模型已进入解析队列。

生成双数据库迁移脚本

打开命令面板,运行 “Fitten: Generate Migrations”。

MySQL(Linux)

MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。

下载

在弹出的选择框中依次完成三项确认:

  1. 选择源模型文件:models/user.ts
  2. 选择目标数据库:先选 mysql → 再选 postgresql(顺序不影响输出)
  3. 输入迁移名称:init_user_table

插件自动生成两个文件:migrations/mysql/20250522_init_user_table.sql 和 migrations/postgresql/20250522_init_user_table.sql。

PostgreSQL 版本中,created_at 字段被自动映射为 TIMESTAMPTZ 类型,并附加 DEFAULT NOW();MySQL 版本则使用 DATETIME(3) + DEFAULT CURRENT_TIMESTAMP(3),【若手动修改过模型中 Date 类型的注释但未加 @db.type 标签,此处将无法覆盖默认映射】

校验并应用迁移

方法一:使用内置校验命令

运行 “Fitten: Validate Migration” → 选择 mysql/20250522_init_user_table.sql → 查看终端输出的兼容性警告(例如 “TINYINT(1) used for boolean in MySQL, ignored in PostgreSQL”)。

方法二:直接对比 SQL 差异

用 VS Code 内置比较功能打开两个生成的 .sql 文件,重点关注三处:主键定义(MySQL 含 AUTO_INCREMENT,PostgreSQL 含 GENERATED BY DEFAULT AS IDENTITY)、布尔字段写法(MySQL 用 TINYINT(1),PostgreSQL 用 BOOLEAN)、索引语法(PostgreSQL 支持 IF NOT EXISTS,MySQL 8.0.19+ 才支持)。

确认无误后,将对应 SQL 文件内容复制到各自数据库客户端中执行即可。

《利用 Fitten Code 自动生成针对不同数据库(MySQL/PostgreSQL)的迁移脚本.doc》

下载本文的Word格式文档,以方便收藏与打印。