zoukankan      html  css  js  c++  java
  • golang mysql 的 packet sequence error 这个错

      在公司用golang 写了个插入外链数据的服务,这服务是2016年写的,大概作用就是,python 爬取的数据,要同步到 wordpress中,golang就负责,将数据整理,图片下载弄到 wordpress中,当然也不止这些服务,本来这个服务之前运行的好好的,可是最近又上了新的数据采集道后,这个服务就显得不稳定了,后台日志,经常报

    packet sequence error

    这个错,纠缠了很久,一直找不到原因,在github上面发现原来作者也有这个坑 https://github.com/ziutek/mymysql/issues/105

    其实,这个错,报的就是一个多协程(线程)的问题,其实说来也怪,我们最近有几个项目都用golang写的就从来没有报过这个错,为啥这个就报这个错,反复的review 代码

    var db *mysql.DB //定义了全局的db
    
    func init() {
         db, _ = MysqlConn.Get().(*mysql.DB) //封装的线程池里拿
    }

    目前就感觉这个是有点毛病,好好看了下golang 的init函数

    1.初始化不能采用初始化表达式初始化的变量。
    2.程序运行前的注册。
    3.实现sync.Once功能。
    4.其他

    肯定这个初始化的时候不能写到 init中,于是换了个写法

    func GetDB() *mysql.DB {
        return MysqlConn.Get().(*mysql.DB)
    }

    直接通过调用GetDB()获取数据的链接,然后再操作,观查了一下午,暂时没有报这个错

  • 相关阅读:
    349、两个数组的交集 | JS集合
    JS集合Set
    JS里的队列和链表
    使用链表指针获取JSON的节点值
    141、环形链表 | JS-链表
    83、删除排序链表中的重复元素 | JS-链表
    2、两数相加 | JS-链表
    事件循环与任务队列
    933、最近的请求次数 | JS-队列
    栈JS实现
  • 原文地址:https://www.cnblogs.com/jackluo/p/10216138.html
Copyright © 2011-2022 走看看