package gormdb import ( "fmt" "git.rosy.net.cn/jx-callback/business/model" "github.com/astaxie/beego" "github.com/jinzhu/gorm" ) var ( dbStr string singletonDB *gorm.DB ) func Init() { dbStr = beego.AppConfig.String("dbConnectStr") AutoMigrate() } // todo gorm要求用单一的db?如果每次重新调用Open,会导致too many connection错误 func GetDB() *gorm.DB { if singletonDB == nil { db, err := gorm.Open("mysql", dbStr) if err == nil { singletonDB = db return db } panic(fmt.Sprintf("AutoMigrate failed with error:%v", err)) } return singletonDB } func AutoMigrate() { db := GetDB() db.SingularTable(true) // db.DropTableIfExists(&model.Place{}) // db.DropTableIfExists(&model.Store{}, &model.StoreSub{}, &model.StoreMap{}) // db.DropTableIfExists(&model.SkuVendorCategory{}, &model.StoreSkuCategoryMap{}, &model.SkuName{}, &model.Sku{}, &model.SkuNamePlaceBind{}, &model.StoreSkuBind{}, &model.SkuCategory{}) db.AutoMigrate(&model.Place{}) db.AutoMigrate(&model.Store{}, &model.StoreSub{}, &model.StoreMap{}) db.AutoMigrate(&model.SkuVendorCategory{}, &model.StoreSkuCategoryMap{}, &model.SkuName{}, &model.Sku{}, &model.SkuNamePlaceBind{}, &model.StoreSkuBind{}) db.Set("gorm:table_options", "CHARSET=utf8mb4").AutoMigrate(&model.SkuCategory{}) db.AutoMigrate(&model.WeiXins{}, &model.JxBackendUser{}) // db.AutoMigrate(&model.DurableTask{}, &model.DurableTaskItem{}) }