package database import ( "bytes" "duoduo/conf" "fmt" _ "github.com/go-sql-driver/mysql" //加载mysql "github.com/jinzhu/gorm" "log" "strconv" ) var Eloquent *gorm.DB var LyMysql *gorm.DB var BzMysql *gorm.DB var ShMysql *gorm.DB var ( Host string Port int Name string Username string Password string ) func Setup() { //加载配置 confIni, errConf := conf.ConnIni() if errConf != nil { fmt.Println(errConf) } Host = confIni.MustValue("mysql", "mysql_host") Port = confIni.MustInt("mysql", "mysql_port") Name = confIni.MustValue("mysql", "mysql_name") Username = confIni.MustValue("mysql", "mysql_username") Password = confIni.MustValue("mysql", "mysql_password") var err error conn := GetMysqlConnect() log.Println(conn) var db Database db = new(Mysql) Eloquent, err = db.Open("mysql", conn) if err != nil { log.Fatalf("mysql connect error %v", err) } else { log.Printf("mysql connect success!") } if Eloquent.Error != nil { log.Fatalf("database error %v", Eloquent.Error) } Eloquent.LogMode(true) //加载领养数据库链接 Host = confIni.MustValue("ly-mysql", "mysql_host") Port = confIni.MustInt("ly-mysql", "mysql_port") Name = confIni.MustValue("ly-mysql", "mysql_name") Username = confIni.MustValue("ly-mysql", "mysql_username") Password = confIni.MustValue("ly-mysql", "mysql_password") conn = GetMysqlConnect() log.Println(conn) //var db Database db = new(Mysql) LyMysql, err = db.Open("mysql", conn) if err != nil { log.Fatalf("mysql connect error %v", err) } else { log.Printf("mysql connect success!") } if LyMysql.Error != nil { log.Fatalf("database error %v", Eloquent.Error) } LyMysql.LogMode(true) //加载壁纸数据库链接 Host = confIni.MustValue("bz-mysql", "mysql_host") Port = confIni.MustInt("bz-mysql", "mysql_port") Name = confIni.MustValue("bz-mysql", "mysql_name") Username = confIni.MustValue("bz-mysql", "mysql_username") Password = confIni.MustValue("bz-mysql", "mysql_password") conn = GetMysqlConnect() log.Println(conn) //var db Database db = new(Mysql) BzMysql, err = db.Open("mysql", conn) if err != nil { log.Fatalf("mysql connect error %v", err) } else { log.Printf("mysql connect success!") } if BzMysql.Error != nil { log.Fatalf("database error %v", Eloquent.Error) } sql := BzMysql.DB() sql.SetMaxOpenConns(100) //设置数据库连接池最大连接数 sql.SetMaxIdleConns(20) BzMysql.LogMode(true) //加载商户卡数据库链接 Host = confIni.MustValue("sh-mysql", "mysql_host") Port = confIni.MustInt("sh-mysql", "mysql_port") Name = confIni.MustValue("sh-mysql", "mysql_name") Username = confIni.MustValue("sh-mysql", "mysql_username") Password = confIni.MustValue("sh-mysql", "mysql_password") conn = GetMysqlConnect() log.Println(conn) //var db Database db = new(Mysql) ShMysql, err = db.Open("mysql", conn) if err != nil { log.Fatalf("mysql connect error %v", err) } else { log.Printf("mysql connect success!") } if ShMysql.Error != nil { log.Fatalf("database error %v", Eloquent.Error) } //sqlSh := ShMysql.DB() //sqlSh.SetMaxOpenConns(100) //设置数据库连接池最大连接数 //sqlSh.SetMaxIdleConns(20) ShMysql.LogMode(true) } func GetMysqlConnect() string { var conn bytes.Buffer conn.WriteString(Username) conn.WriteString(":") conn.WriteString(Password) conn.WriteString("@tcp(") conn.WriteString(Host) conn.WriteString(":") conn.WriteString(strconv.Itoa(Port)) conn.WriteString(")") conn.WriteString("/") conn.WriteString(Name) conn.WriteString("?charset=utf8mb4&parseTime=True&loc=Local&timeout=1000ms") return conn.String() } type Database interface { Open(dbType string, conn string) (db *gorm.DB, err error) } type Mysql struct { } func (*Mysql) Open(dbType string, conn string) (db *gorm.DB, err error) { eloquent, err := gorm.Open(dbType, conn) return eloquent, err }