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{})