zoukankan      html  css  js  c++  java
  • 【转载】mysql导入大批量数据出现MySQL server has gone away的解决方法

    因工作需要,需要导入一个200M左右的sql到user库

    执行命令

    mysql> use user
    Database changed
    mysql> source /tmp/user.sql
    
    • 1
    • 2
    • 3
    • 1
    • 2
    • 3

    导入的过程中出现MySQL server has gone away错误,数据导入失败。

    错误信息如下:

    ERROR 2006 (HY000): MySQL server has gone away
    ERROR 2006 (HY000): MySQL server has gone away
    No connection. Trying to reconnect...
    Connection id:    11
    Current database: user
    
    ERROR 2006 (HY000): MySQL server has gone away
    No connection. Trying to reconnect...
    Connection id:    12
    Current database: user
    
    ERROR 2006 (HY000): MySQL server has gone away
    ERROR 2006 (HY000): MySQL server has gone away
    No connection. Trying to reconnect...
    Connection id:    13
    Current database: user
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    开始以为是超时导致,因此调大了 connect_timeoutwait_timeout 的值。

    重新执行后问题依旧。


    解决方法:

    查看资料,发现了 max_allowed_packet 参数,
    官方解释是适当增大 max_allowed_packet 参数可以使client端到server端传递大数据时,系统能够分配更多的扩展内存来处理。

    查看mysql max_allowed_packet的值

    mysql> show global variables like 'max_allowed_packet';
    +--------------------+---------+
    | Variable_name      | Value   |
    +--------------------+---------+
    | max_allowed_packet | 4194304 |
    +--------------------+---------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    可以看到是4M,然后调大为256M(1024*1024*256)

    mysql> set global max_allowed_packet=268435456;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show global variables like 'max_allowed_packet';
    +--------------------+-----------+
    | Variable_name      | Value     |
    +--------------------+-----------+
    | max_allowed_packet | 268435456 |
    +--------------------+-----------+
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    修改后执行导入,一切正常,解决问题。


    注意:
    使用set global命令修改 max_allowed_packet 的值,重启mysql后会失效,还原为默认值。

    如果想重启后不还原,可以打开 my.cnf 文件,添加 max_allowed_packet = 256M 即可。


    转载地址:http://blog.csdn.net/fdipzone/article/details/51974165

  • 相关阅读:
    POJ-2478 Farey Sequence(欧拉函数)
    BZOJ-1103: [POI2007]大都市meg(树状数组)
    NOIP2016模拟 星际争霸(二分)
    HDU-1222 Wolf and Rabbit (欧几里得定理)
    POJ-2689 Prime Distance(线性筛法)
    FZU-2134 上车(树状数组)
    FZU-2236 第十四个目标(树状数组)
    2016年11月12日00:14:27
    FZU-1921 栀子花开(线段树)
    BZOJ3132 上帝造题的七分钟
  • 原文地址:https://www.cnblogs.com/linewman/p/9918270.html
Copyright © 2011-2022 走看看