package conn import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "github.com/pkg/errors" "log" ) type MySQLConn struct { Host string Port int Username string Password string DBName string } var mysqlDB *sql.DB // InitMySQLConn 初始化mysql连接 func InitMySQLConn(cfg *MySQLConn) error { var err error mysqlDB, err = sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", cfg.Username, cfg.Password, cfg.Host, cfg.Port, cfg.DBName)) if err != nil { return errors.Wrap(err, "open mysql failed") } mysqlDB.SetMaxIdleConns(5) mysqlDB.SetMaxOpenConns(50) // ping if err = mysqlDB.Ping(); err != nil { return errors.Wrap(err, "ping mysql failed") } log.Printf("connect mysql successfully, host:%s, port:%d\n", cfg.Host, cfg.Port) return nil } func GetMySQLConn() *sql.DB { return mysqlDB } func CloseMySQLConn() error { if mysqlDB == nil { return nil } return mysqlDB.Close() }