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 ( 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) //McNew() } 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 }