Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >OperationalError: (2006, 'MySQL server has gone away')

OperationalError: (2006, 'MySQL server has gone away')

作者头像
周小董
发布于 2019-03-25 02:59:12
发布于 2019-03-25 02:59:12
2.5K00
代码可运行
举报
文章被收录于专栏:python前行者python前行者
运行总次数:0
代码可运行

在使用 Python + MySQLdb 部署项目的时候,执行计划任务报错

OperationalError (2006, ‘MySQL server has gone away’)

解决办法1: 原因是由于长时间的执行批量的MYSQL语句造成,修改/etc/my.cnf 在[mysqld]段落加入wait_timeout=90000 示例文件内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  [mysqld]
  datadir=/var/lib/mysql
  socket=/var/lib/mysql/mysql.sock
  # Default to using old password format for compatibility with mysql 3.x
  # clients (those using the mysqlclient10 compatibility package).
  old_passwords=1
  # 修正 OperationalError: (2006, 'MySQL server has gone away') 错误
  wait_timeout=100000

其他省略… 然后 重启mysql服务,再次访问问题页面,没有再出现如上问题,问题得到暂时解决

解决办法2: 修改数据库连接代码 使用mysql ping来检查连接,实现超时自动重新连接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  #/usr/bin/env python
  import MySQLdb
  con=MySQLdb.Connect( host="foobar.com",
                       port=3306,
                       user="loginname",
                       passwd="loginpassword",
                       db="foobar")
  con.ping(True)
  cur=con.cursor()

推荐使用第2种解决方法,从代码彻底解决!


原因

连接超时

我出现问题就是这个原因. 进入mysql,执行下面的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> show global variables like '%timeout';

+----------------------------+----------+
| Variable_name              | Value    |
+----------------------------+----------+
| connect_timeout            | 10       |
| delayed_insert_timeout     | 300      |
| innodb_lock_wait_timeout   | 50       |
| innodb_rollback_on_timeout | OFF      |
| interactive_timeout        | 28800    |
| lock_wait_timeout          | 31536000 |
| net_read_timeout           | 30       |
| net_write_timeout          | 60       |
| slave_net_timeout          | 3600     |
| wait_timeout               | 28800    |
+----------------------------+----------+

wait_timeout 是28800秒,即mysql链接在无操作28800秒后被自动关闭

解决方法

立即生效

执行下面的sql命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> set global wait_timeout=60*60*30;

该命令是将wait_timeout设置为30小时. 用这种方法,修改完立即生效. 如果重启mysql, 又恢复原来的28800秒.

永久生效

该方法修改完之后, 需要重启mysql才能生效. 编辑mysql配置文件my.cnf,添加或修改为下面这条命令. (我的mysql配置文件路径: /etc/mysql/my.cnf )

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wait_timeout = 108000

其他原因

还有一些其他原因, 简单描述一下 1: mysql服务关闭 2: 数据包 过大 解决方法: 修改 max_allowed_packet 的值, 方法同上.

参考:http://blog.51cto.com/luruoyu/788315 https://blog.csdn.net/win_turn/article/details/78196789?utm_source=copy

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年10月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL Server has gone away 报错原因汇总版
如果uptime数值很大,表明MySQL服务运行了很久了,说明最近服务没有重启过。如果日志没有相关信息,也说明MySQL服务最近没有重启过,可以继续检查下面几项内容。
wubx
2019/02/27
4.1K0
MySQL占用CPU过高 查找原因及解决 多种方式
-- select * from information_schema.PROCESSLIST where info is not null;
用户5005176
2021/08/08
7.3K0
MySQL timeout调研与实测
接触网络编程我们不得不提的就是超时,TCP建立连接的超时,数据报文发送/接收超时等等,mysql在超时上也做足了功夫。
九州暮云
2019/08/21
1.1K0
MySQL timeout调研与实测
关于mysql的wait_timeout参数 设置不生效的问题
转载自:http://www.cnblogs.com/azhqiang/p/5454000.html
保持热爱奔赴山海
2019/09/18
4.3K0
12种mysql常见错误总结 +分析示例
小伙伴们好,我是阿沐!最近呢,正筹备上云工作,需要考虑到很多场景;比如mongo、mysql、redis、splinx等等迁移工作,这就涉及到版本兼容问题;在迁移之前,阿沐迁移了mysql到其他容器中,发现迁移机器mysql版本号比较高5.7以上,就出现了sql语句兼容问题。所以趁机会整理了很久以前遇到的各种mysql常见问题跟掘金小伙伴们分享下。小伙伴们可以收藏起来哦,遇到常规错误可以快速查询解决~~~
我是阿沐
2021/06/24
2.2K0
处理java访问mysql连接数太多的错误
在生产环境处理故障的过程出现了java服务连接mysql,由于连接数太多被拒绝连接的故障,那么下面来看看怎么优化一下吧。
Devops海洋的渔夫
2019/06/02
1.8K0
MYSQL用法(十九) MySQL中查询时”Lost connection to MySQL server during query”报错的解决方案
dw_user 表数据量比较大,直接查询速度慢,容易"卡死",导致数据库自动连接超时....
Java架构师必看
2021/06/10
7.4K0
数据库炸了——是谁动了我的wait_timeout
  我条件反射的回了句那是接口超时,再多试几次(测试环境的性能比较差,尤其是数据库,经常504
JackieZheng
2019/09/29
8150
数据库炸了——是谁动了我的wait_timeout
通过案例分析MySQL中令人头疼的Aborted告警
这篇文章通过案例跟大家分析了MySQL中令人头疼的Aborted告警的相关资料,文中将Aborted告警介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
拓荒者
2019/03/11
8260
Mysql占用过高CPU时的优化手段
Mysql占用CPU过高的时候,该从哪些方面下手进行优化? 占用CPU过高,可以做如下考虑: 1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processlist语句,查找负荷最重的SQL语句,优化该SQL,比如适当建立某字段的索引; 2)打开慢查询日志,将那些执行时间过长且占用资源过多的SQL拿来进行explain分析,导致CPU过高,多数是GroupBy、OrderBy排序问题所导致,然后慢慢进行优化改进。比如优化insert语句、优化group by语句、
洗尽了浮华
2018/01/23
4.8K0
Mysql占用过高CPU时的优化手段
MySQL提示“too many connections”的解决办法
登陆到MySQL的提示符下,数据show processlist这个命令,可以得到所以连接到这个服务器上的MySQL连接:mysql> show  processlist; +———+——+———————+———+———+——+——-+——————-+ | Id      | User | Host                | db      | Command | Time | State | Info              | +———+——+———————+———+———+——+——-+——————-+ | 1180421 | ur   | 202.103.96.68:49754 | test1   | Sleep   |    1 |       | NULL              | | 1180427 | ur   | 202.103.96.68:55079 | test2   | Sleep   |    1 |       | NULL              | | 1180429 | ur   | 202.103.96.68:55187 | testdba | Sleep   |    0 |       | NULL              | | 1180431 | ur   | 202.103.96.68:55704 | testdba | Sleep   |    0 |       | NULL              | | 1180437 | ur   | 202.103.96.68:32825 | test1   | Sleep   |    1 |       | NULL              | | 1180469 | ur   | 202.103.96.68:58073 | testdba | Sleep   |    0 |       | NULL              | | 1180472 | ur   | 83.136.93.131:47613 | test2   | Sleep   |    8 |       | NULL              | | 1180475 | root | localhost           | NULL    | Query   |    0 | NULL  | show  PROCESSLIST | +———+——+———————+———+———+——+——-+——————-+ 8 rows in set (0.00 sec)
用户10325771
2023/03/01
7490
MySQL优化之缓存优化
MySQL的优化指的是一个很大的系统,面试的时候我之前是从sql的语句优化方面去说的,这种优化也有作用,不过是从逻辑方面去优化。但是当所有的逻辑层面已经无可优化,所有的索引都已经加好,表结构也设计的合理,但是遇到高并发的时候,为什么MySQL还是扛不住呢。当然可以通过其他的方面去缓解MySQL的压力,这里我们暂且不谈。对于MySQL而言,我们要尽最大的可能去压榨机器的性能,让所有的计算资源都不浪费,都可以为我们服务。MySQL运行在服务器上,这里特指Linux服务器。那么服务器的硬盘、CPU,内存,网络都有影响到MySQL的性能。MySQl是非常耗费内存的,线上服务器的MySQL内存要吃到80%左右,内存过小,其他的优化空间其实很小。
用户7353950
2022/05/11
1.3K0
重启MySQL服务(怎么重启mysql服务)
我的电脑——(右键)管理——服务与应用程序——服务——MYSQL——开启(停止、重启动)
全栈程序员站长
2022/08/02
12.5K0
Can’t connect to local MySQL server through socket
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
星哥玩云
2022/08/16
2K0
wait_timeout【Mysql】解决方案
图1 超时报错 就是这个异常(com.mysql.jdbc.exceptions.jdbc4. CommunicationsException:Communications link failure Last packet sent to the server was X ms ago),是由于MySQL服务在长时间不连接之后断开了,断开之后的首次请求会抛出这个异常。那么既然是连接超时的问题,就要去MySQL中探究一下连接时间是怎么控制的。打开MySQL的控制台,运行:show variables like ‘%timeout%’,查看和连接时间有关的MySQL系统变量,得到如下结果:
红目香薰
2022/11/29
9810
wait_timeout【Mysql】解决方案
MySQL报错解决:MySQL server has gone away
报错信息 [Err] 2006 - MySQL server has gone away 原因及解决 原因一: 在数据库应用中执行长时间执行MySQL语句 解决:1.1 打开 my.ini (my.cnf) 文件修改以下变量: wait_timeout=2880000 interactive_timeout = 2880000 ---- 原因二:在导入数据库或数据库应用执行较长语句 解决:修改my.ini (my.cnf) 文件修改以下变量: max_allowed_packet = 10M
白墨石
2021/01/13
1K0
操作mysql第一次访问速度慢(远程)
最近在使用java操作远程的mysql数据库的时候,第一次请求非常的慢,而且极其容易引起系统的崩溃报错连接超时
Arebirth
2019/09/24
3.6K0
操作mysql第一次访问速度慢(远程)
MySQL数据库常见报错案例与错误代码说明
这种情况是不能打开 cdb_forums.MYI造成的,引起这种情况可能的原因有:
非著名运维
2022/06/22
2.1K0
开发经验|小白该如何学习MySQL配置文件
上一篇简单介绍了下MySQL的存储引擎,为什么需要存储引擎以及如何使用存储引擎。MySQL的配置文件是控制和配置 MySQL服务器行为的重要文件。对于新手开发者来说,理解掌握并运用 MySQL 配置文件是非常重要的。本篇想着重讲下MySQL的配置文件,帮助读者朋友们快速了解并上手使用,以便解决你在学习和工作中遇到的问题。
六月暴雪飞梨花
2023/11/24
7870
开发经验|小白该如何学习MySQL配置文件
Mysql优化
是否启用mysql查询缓存,可以通过2个参数:query_cache_type和query_cache_size,
码客说
2019/10/22
8180
相关推荐
MySQL Server has gone away 报错原因汇总版
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验