54 lines
981 B
Go
54 lines
981 B
Go
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()
|
|
}
|