gorm测试实验
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
3.0 KiB

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
}