package database import ( "flag" "fmt" "gorm_test/config" "github.com/go-ini/ini" "gorm.io/driver/mysql" "gorm.io/gorm" ) var ( databaseConfig = flag.String("sqlConfig", "configIni/mysqlConfig.ini", "数据库配置文件") MysqlConfigSet = &config.MysqlConfig{} ) type SetDb struct{} func readConfig(dataName string) { if dataName != "" { DataBaseLoadName = dataName } else { DataBaseLoadName = config.Appconfig.MasterDatabase } dataBaseSetUp, err := ini.Load(*databaseConfig) if err != nil { fmt.Printf("%v=>数据库配置加载失败", dataName) } err = dataBaseSetUp.Section(dataName).MapTo(MysqlConfigSet) if err != nil { fmt.Printf("%v=>数据库配置读取失败", dataName) } // fmt.Printf("%v=>数据库配置读取失败", MysqlConfigSet) } func SwitchDatabase(dataBaseName string) (db *gorm.DB) { readConfig(dataBaseName) db = InitDB() DataBaseLoadName = config.Appconfig.MasterDatabase return } func InitDB() (db *gorm.DB) { readConfig(DataBaseLoadName) // dsn := MysqlConfigSet.DB_User + ":" + MysqlConfigSet.DB_Pwds + "@tcp(" + MysqlConfigSet.DB_Host + ":" + MysqlConfigSet.DB_Port dsn := MysqlConfigSet.DB_User + ":" + MysqlConfigSet.DB_Pwds + "@tcp(" + MysqlConfigSet.DB_Host + ":" + MysqlConfigSet.DB_Port + ")/" + MysqlConfigSet.DB_Name + "?" + MysqlConfigSet.DB_Config fmt.Printf("==>%v-----------%v====%v\n", MysqlConfigSet.DB_Name, DataBaseLoadName, dsn) mysqlConfig := mysql.Config{ DSN: dsn, // DSN data source name DefaultStringSize: 191, // string 类型字段的默认长度 DisableDatetimePrecision: true, // 禁用 datetime 精度,MySQL 5.6 之前的数据库不支持 DontSupportRenameIndex: true, // 重命名索引时采用删除并新建的方式,MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引 DontSupportRenameColumn: false, // 用 `change` 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列 SkipInitializeWithVersion: false, // 根据版本自动配置 } db, _ = gorm.Open(mysql.New(mysqlConfig), gormConfig()) // if db, _ = gorm.Open(mysql.New(mysqlConfig), gormConfig()); err != nil { // //global.GVA_LOG.Error("MySQL启动异常", zap.Any("err", err)) // //os.Exit(0) // //return nil // return // } // } else { // sqlDB, _ := db.DB() // sqlDB.SetMaxIdleConns(m.MaxIdleConns) // sqlDB.SetMaxOpenConns(m.MaxOpenConns) // // return db // } return } func gormConfig() *gorm.Config { config := &gorm.Config{DisableForeignKeyConstraintWhenMigrating: true} // switch global.GVA_CONFIG.Mysql.LogMode { // case "silent", "Silent": // config.Logger = internal.Default.LogMode(logger.Silent) // case "error", "Error": // config.Logger = internal.Default.LogMode(logger.Error) // case "warn", "Warn": // config.Logger = internal.Default.LogMode(logger.Warn) // case "info", "Info": // config.Logger = internal.Default.LogMode(logger.Info) // default: // config.Logger = internal.Default.LogMode(logger.Info) // } return config }