GORM 的 Migration API(迁移接口) 是一套用于管理数据库结构变更的工具,主要用于在程序运行时自动或手动同步数据表结构,确保数据库 Schema 与代码中的模型保持一致。
核心功能:
-
AutoMigrate(自动迁移)
通过
db.AutoMigrate(&User{})可自动创建表、缺失的外键、约束、列和索引。它会根据结构体定义更新数据库结构,但不会删除未使用的列 ,以保护已有数据安全。示例:
godb.AutoMigrate(&User{}, &Product{}) -
Migrator 接口
GORM 提供统一的
Migrator接口,用于执行更精细的数据库结构操作,如:- 创建/删除表
- 添加/删除列
- 添加/删除索引
- 检查表或索引是否存在(如
HasTable,HasIndex) - 重命名索引等
这个接口为不同数据库(如 SQLite、MySQL、PostgreSQL)提供一致的操作方式,屏蔽底层 SQL 差异。
-
外键与约束支持
在 AutoMigrate 或建表时,GORM 默认会自动创建外键约束,但可以通过配置关闭:
godb, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{ DisableForeignKeyConstraintWhenMigrating: true, })同时支持使用
check标签添加数据库检查约束。 -
数据库兼容性处理
针对不支持某些 DDL 操作的数据库(如 SQLite 不支持
ALTER COLUMN),GORM 会智能地通过"新建表 → 复制数据 → 删除旧表 → 重命名新表"的方式完成结构变更。
✅ 总结:
GORM 的 Migration API 是一套强大且易用的数据库结构管理工具,包含 AutoMigrate 自动同步机制和 Migrator 手动控制接口,帮助开发者在不直接写 SQL 的前提下,安全高效地管理数据库变更。