gorm连接mysql时默认创建的表使用的引擎是MyISAM。使用事务是可能会失效。需要在初始化配置的时候设置表引擎。参考代码如下:
var DB *gorm.DB var Dialect = "mysql" var Dsn = "root:root@tcp(127.0.0.1:3306)/db_test?charset=utf8mb4&parseTime=True&loc=Local" DB, err = gorm.Open(Dialect, config.Database.Dsn) if err != nil { panic(err) } if Dialect == "mysql" { DB.InstantSet("gorm:table_options", "ENGINE=InnoDB") } DB.AutoMigrate(&User{})