grpcexercises/consuldemo/pkg/db/conn/mysql.go

54 lines
981 B
Go
Raw Permalink Normal View History

2023-12-17 15:48:47 +08:00
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()
}