我有一个程序需要很长时间才运行完, 里面有很多地方都需要对MYSQL进行操作。。 我现在用的是mymysql模块 每个查询(select)或者insert 都先 db := mysql.New(...)
然后再
db.Close()
这样每次打开、关闭 再打开再关闭,好像性能不好。
有没有办法所有地方的mysql操作都用一个 db连接 ?
我毫尝试写一个全局的db,但是当程序运行一会儿就会报错:panic: packet sequence error
package common
import (
"errors"
//"fmt"
"github.com/ziutek/mymysql/mysql"
_ "github.com/ziutek/mymysql/native" // Native engine
// "os/exec"
"strconv"
"time"
)
var dbConnection mysql.Conn
func GetMysqlConnection(dbname string) (mysql.Conn, error) {
if dbConnection != nil {
return dbConnection, nil
}
defaultConfig := MysqlConnectionConfigList[index]
db := mysql.New("tcp", "", "127.0.0.1:3306", "root", "123456", dbname)
db.Register("set names utf8")
db.SetTimeout(10 * time.Second)
err := db.Connect()
if err != nil {
return nil, err
}
dbConnection = db
return db, nil
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
go标准库的database/sql本身带连接池,把mymysql作为sql.Open的driver来连,其他什么都不用做