前言

使用django执行sql相关操作的时候,出现一个“MySQL server has gone away”错误,后来查了下是sql执行过程中,导入的文件较大时候,会出现这个异常。

检查了下sql语句,确实有插入图片,图片较大导致出现MySQL server has gone away。

该问题是max_allowed_packet配置的默认值设置太小,只需要相应调大该项的值之后再次导入便能成功。

该项的作用是限制mysql服务端接收到的包的大小,因此如果导入的文件过大则可能会超过该项设置的值从而导致导入不成功!

环境:

CentOS7.4

mysql5.6

max_allowed_packet

首先连接数据库,查看max_allowed_packet的值。

以linux系统为例,输入mysql -uroot -p进入mysql,输入root用户密码进入mysql

mysql -uroot -p

[root@yoyo ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 33700
Server version: 5.6.42 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

查看 max_allowed_packet 的值

show global variables like 'max_allowed_packet';

查看到max_allowed_packet值是4194304,也就是默认4M(410241024)

mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+
1 row in set (0.00 sec) mysql>

修改max_allowed_packet 的值

默认情况下max_allowed_packet的大小只有4M,接下来将该值设置成100M(10241024100)

set global max_allowed_packet=104857600;

重新查看max_allowed_packet的大小

mysql> set global max_allowed_packet=104857600;
Query OK, 0 rows affected (0.00 sec) mysql> show global variables like 'max_allowed_packet';
+--------------------+-----------+
| Variable_name | Value |
+--------------------+-----------+
| max_allowed_packet | 104857600 |
+--------------------+-----------+
1 row in set (0.00 sec) mysql> exit
Bye

设置完成之后,exit退出数据库即可。

Navicat修改

如果你不会直接进数据库操作,使用远程工具Navicat也是可以直接修改的

-- 修改max_allowed_packet
set global max_allowed_packet=104857600; -- 查看
show global variables like 'max_allowed_packet';

请注意通过在命令行中进行设置只对当前有效,重启mysql服务之后则恢复默认值,但可以通过修改my.cnf配置文件来达到永久有效的目的

my.cnf配置

my.cnf配置文件一般在/etc/my.cnf或者/etc/mysql/my.cnf目录,使用cat查看当前配置

[root@yoyo ~]# cat /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html [mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0 # Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[root@yoyo ~]#

在可以在配置文件my.cnf中[mysqld]添加max_allowed_packet=100M即可

python测试开发django-58.MySQL server has gone away错误的解决办法的更多相关文章

  1. MySQL server has gone away错误的解决办法

    在我们使用mysql导入大文件sql时可能会报MySQL server has gone away错误,该问题是max_allowed_packet配置的默认值设置太小,只需要相应调大该项的值之后再次 ...

  2. mysql出现mysql server has gone away错误的解决办法

    应用程序(比如PHP)长时间的执行批量的MYSQL语句.执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段.比如,图片数据的处理.都容易引起MySQLserver has ...

  3. mysql导入大量数据时报MySQL server has gone away错误的解决办法

    https://blog.csdn.net/eric520zenobia/article/details/77619469

  4. mysql不能启动报error2013错误的解决办法

    Mysql mysql lost connection to server during query 问题解决方法 2013-10-16 11:10:53 缘由: 在查询Mysql中的数据库,或者修改 ...

  5. mysql免安装版1067错误终极解决办法|在windows平台下MySql启动时的1067错误的解决方法及反思

    [windows事件查看] 我的电脑--此电脑--右键管理--计算机管理--系统工具--事件查看器--Windows日志--应用程序--找错误标志,如下图 [提示] 按部就班,可能并不能解决你的问题, ...

  6. python web开发Django连接mysql

    需要MYSQL-python,一般情况下直接pip install window系统会报错,所以要去 https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml  ...

  7. java web添加mysql过程中遇到的错误及解决办法

    问题一:遇到提示找不到驱动   com.mysql.jdbc.Driver 起初项目中是导入了mysql-connector-java-5.1.45-bin.jar 包的,但是一直依然报错,最后去官网 ...

  8. IIS出现Server Error in '/' Application 错误的解决办法

    C:\Windows\Temp"文件夹加上 IIS_IUSRS的权限

  9. python web开发——django学习(一)第一个连接mysql数据库django网站运行成功

    1.新建一个项目 2.新建一些文件夹方便管理 3.新建一个项目叫message  4.连接数据库 python web开发Django连接mysql 5.在数据库里自动生成django的表  6.运行 ...

随机推荐

  1. 【tensorflow-v2.0】如何将模型转换成tflite模型

    前言 TensorFlow Lite 提供了转换 TensorFlow 模型,并在移动端(mobile).嵌入式(embeded)和物联网(IoT)设备上运行 TensorFlow 模型所需的所有工具 ...

  2. Kubernetes 及安装注意事项

    Docker Desktop for Mac/Windows开启Kubernetes 及安装注意事项 Table of Contents 1 解决方案 2 注意事项 2.1 Choose Kubeco ...

  3. 【记录】【java】反射设值取值

    1.设值 /** * 根据属性名设置属性值 * * @param fieldName * @param object * @return */ public boolean setFieldValue ...

  4. python:实现几种排序算法

    冒泡排序 比较相邻两个字符,如果左边大于右边,则交换位置,遍历一遍字符后,则最大的肯定在最右边:继续循环处理剩下的字符(最右边的不用再比较了,已经最大了) 代码实现: def BubbleSort(s ...

  5. Typora使用技巧系列:(1)

    Typora使用技巧(1) 刚刚开了博客怎么说也要学一下markdown语法什么的吧,使用的是编译器是Typora,之后有空会陆续更新的 切换到源代码模:(ctrl + /)临时切换到源代码模式,再按 ...

  6. golang基础学习---log

    package main import ( "log" ) func init() { log.SetPrefix("TRACE: ") log.SetFlag ...

  7. 创建包含CRUD操作的Web API接口5:实现Delete方法

    本节是前面四节的延续,在前面几节中我们创建了Web API并添加了必要的基础设施,实现了Get.Post.和Put方法.本节中,我们将介绍如何在Web API中实现Delete方法. 在RESTful ...

  8. GreenPlum 最佳实践

    数据模型 Greenplum数据库是一种shared nothing的分析型MPP数据库.这种模型与高度规范化的/事务型的SMP数据库有显著区别.Greenplum数据库使用非规范化的模式设计会工作得 ...

  9. EgretWing链接微信开发工具调试问题

    EgretWing链接微信开发工具调试问题 EgretWing 编译器支持持三种调试模式,Node.js .Chrome .EgretWing 扩展开发. 开发过程中会遇到工具配置错误. 这就需要在E ...

  10. Http异常状态码解决方案。

    415出现的原因:一般是传参的时候传的是json格式的参数,解决办法:先添加信息头管理器,然后在里面添加:(名称:Content-type)(值:application/json),这样就可以识别js ...