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.
89 lines
3.0 KiB
89 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
|
|
}
|
|
|