我有一个程序需要很长时间才运行完, 里面有很多地方都需要对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来连,其他什么都不用做