全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-21 6 分钟 ✍️ juanwangdev

AutoMigrate 使用

GORM 提供 AutoMigrate 方法,自动根据模型结构创建或更新数据库表结构。

什么是 AutoMigrate

AutoMigrate 会根据 Go 结构体定义,自动执行以下操作:

  • 创建不存在的表
  • 添加缺失的列
  • 添加缺失的索引
  • 修改列类型(仅兼容变更)

注意:AutoMigrate 不会删除未使用的列或已变更的列名,以保证数据安全。

基本语法

Go
func (db *DB) AutoMigrate(dst ...interface{}) error

使用示例

单模型迁移

Go
type User struct {
    gorm.Model
    Name  string
    Email string `gorm:"uniqueIndex"`
    Age   int
}

// 自动创建 users 表
db.AutoMigrate(&User{})

多模型同时迁移

Go
type Product struct {
    ID    uint   `gorm:"primaryKey"`
    Name  string
    Price float64
}

type Order struct {
    ID        uint `gorm:"primaryKey"`
    UserID    uint
    ProductID uint
    Quantity  int
}

// 同时创建多个表
db.AutoMigrate(&User{}, &Product{}, &Order{})

带错误处理

Go
err := db.AutoMigrate(&User{})
if err != nil {
    log.Fatalf("迁移失败: %v", err)
}

注意事项

  • AutoMigrate 仅用于开发环境或简单场景,生产环境建议使用专业迁移工具
  • 不会删除已废弃的列或重命名的列
  • 外键关系需要手动配置,AutoMigrate 不自动创建外键约束
  • 多次调用 AutoMigrate 是安全的,已存在的对象会被跳过

要点总结

特性说明
自动创建表表不存在时自动创建
添加缺失列检测并添加新字段
添加索引自动创建 model 中定义的索引
安全性不删除已有列或数据
幂等性可重复调用,已存在则跳过

存放路径:D:\git2\jwdev\articles\GORM\入门\数据库迁移基础\AutoMigrate 使用.md

📝 发现内容有误?点击此处直接编辑

← 上一篇 索引标签配置
下一篇 → 手动创建表
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库