【MySQL】ERROR : (2006, 'MySQL server has gone away')

31 篇文章 88 订阅

意思就是指client和MySQL server之间的链接断开了。

造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... values的语句过长, 这种情况可以通过修改max_allowed_packed的配置参数来避免,也可以在程序中将数据分批插入)。

以下用python稍微封装了一下数据分批插入的操作:

def process_insert_list(cursor, tbl_name, insert_list):
    insert_sql = ''
    insert_head = "insert ignore into %s values"%tbl_name
    len_col = len(insert_list[0])

    tmp_str_s = '('
    tmp_str_e = ')'
    for i in range (1 , len_col):
        tmp_str_s = tmp_str_s + '%s,'

    tmp_str = tmp_str_s + '%s' + tmp_str_e
    insert_sql = "%s%s"%(insert_head,tmp_str)
    list_len = len(insert_list)

    if list_len>0 and insert_sql!='':
        insert_len = 5000    #自定义每次插入的记录量
        insert_times = list_len/insert_len+1
        for i in xrange(0, insert_times):
            start_index = i*insert_times
            end_index = start_index+insert_len
            if start_index>=list_len: break
            if end_index>=list_len: end_index = list_len

            tmp_list = insert_list[start_index:end_index]
            cursor.executemany(insert_sql, tmp_list)



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值