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启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
下载
在弹出的选择框中依次完成三项确认:
- 选择源模型文件:models/user.ts
- 选择目标数据库:先选 mysql → 再选 postgresql(顺序不影响输出)
- 输入迁移名称: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 文件内容复制到各自数据库客户端中执行即可。
