数据库
首页 > 数据库> > golang mysql 客户端

golang mysql 客户端

作者:互联网

...

使用mysql 客户端的正确姿势,解决一堆 3306 time_wait的问题

package dbs

import (
	"database/sql"
	"fmt"
	"log"
	"time"

	_ "github.com/go-sql-driver/mysql"
)

var MysqlDb *sql.DB
var MysqlDbErr error

const (
	USER_NAME = "root"
	PASS_WORD = "123456"
	HOST      = "localhost"
	PORT      = "3306"
	DATABASE  = "hudb"
	CHARSET   = "utf8"
)

// 初始化链接
func init() {

	dbDSN := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s", USER_NAME, PASS_WORD, HOST, PORT, DATABASE, CHARSET)

	// 打开连接失败
	MysqlDb, MysqlDbErr = sql.Open("mysql", dbDSN)
	//defer MysqlDb.Close();
	if MysqlDbErr != nil {
		log.Println("dbDSN: " + dbDSN)
		panic("数据源配置不正确: " + MysqlDbErr.Error())
	}

	// 最大连接数
	MysqlDb.SetMaxOpenConns(100)
	// 闲置连接数
	MysqlDb.SetMaxIdleConns(20)
	// 最大连接周期
	MysqlDb.SetConnMaxLifetime(100 * time.Second)

	if MysqlDbErr = MysqlDb.Ping(); nil != MysqlDbErr {
		panic("数据库链接失败: " + MysqlDbErr.Error())
	}

}


// 用户表结构体
type User struct {
	Id   int64  `db:"id"`
	Name string `db:"name"`
}

// 查询数据,指定字段名
func StructQueryField() {

	user := new(User)
	row := MysqlDb.QueryRow("select id, name from tb1 where id=?", 1)
	if err := row.Scan(&user.Id, &user.Name); err != nil {
		fmt.Printf("scan failed, err:%v", err)
		return
	}
	fmt.Println(user.Id, user.Name)

	MysqlDb.Close()
	row1 := MysqlDb.QueryRow("select id, name from tb1 where id=?", 1)
	if err := row1.Scan(&user.Id, &user.Name); err != nil {
		fmt.Printf("scan failed, err:%v", err)
		return
	}
	fmt.Println(user.Id, user.Name)

}

  

标签:err,fmt,MysqlDbErr,golang,MysqlDb,user,mysql,id,客户端
来源: https://www.cnblogs.com/eiguleo/p/15406696.html