package main import ( "fmt" "log" "gorm.io/driver/mysql" "gorm.io/gorm" "git.toowon.com/jimmy/go-common/migration" ) func main() { // 初始化数据库连接 dsn := "user:password@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { log.Fatal(err) } // 创建迁移器 migrator := migration.NewMigrator(db) // 添加迁移 migrator.AddMigration(migration.Migration{ Version: "20240101000001", Description: "create_users_table", Up: func(db *gorm.DB) error { return db.Exec(` CREATE TABLE IF NOT EXISTS users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, email VARCHAR(255) UNIQUE NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) `).Error }, Down: func(db *gorm.DB) error { return db.Exec("DROP TABLE IF EXISTS users").Error }, }) // 执行迁移 if err := migrator.Up(); err != nil { log.Fatal(err) } // 查看迁移状态 status, err := migrator.Status() if err != nil { log.Fatal(err) } for _, s := range status { fmt.Printf("Version: %s, Description: %s, Applied: %v\n", s.Version, s.Description, s.Applied) } }