问题一、MySQL server has gone away

##### peewee
from peewee import *
from peewee import __exception_wrapper__ class RetryOperationalError(object): def execute_sql(self, sql, params=None, commit=True):
try:
cursor = super(RetryOperationalError, self).execute_sql(sql, params, commit)
except OperationalError:
if not self.is_closed():
self.close()
with __exception_wrapper__:
cursor = self.cursor()
cursor.execute(sql, params or ())
if commit and not self.in_transaction():
self.commit()
return cursor class RetryMySQLDatabase(RetryOperationalError, MySQLDatabase):
def sequence_exists(self, seq):
pass database = RetryMySQLDatabase(...)  # 创建连接对象 # 代码使用: 每次执行SQL前判断连接是否关闭
def post(self):
  if database.is_closed():
    database.connect()
  ... ##### pymysql
def get_conn():
  global conn
  global cur
  if conn is not None:
    try:
      conn.ping(True)
      return conn
    except Exception as e:
      logging.exception(e)
  try:
    conn = pymysql.Connect(host='主机名', user='用户名', password='密码', database='数据库', port=3306, charset='utf8mb4', )
    return conn
  except Exception as e:
    logging.exception(e) # 查询数据
querystr ="SELECT * FROM t_user"
get_conn()
cur.execute(querystr)
conn.commit() ### 原因
1、连接超时:当某个连接很久没有发起新的数据库操作,达到了MySQL的wait_timeout时,会被server端强行关闭,关闭之后再使用这个连接进行查询,则会出现报错信息,表现为第一天服务正常访问,第二天无法访问。
  执行语句:show global variables like '%timeout'; wait_timeout的值则为连接无操作xxx秒后断开连接
2、MySQL宕机:执行语句,show global status like 'uptime'; 查看MySQL的运行时长,uptime数值越大,MySQL的运行时间越长。 3、查询结果集过大:执行语句,show global variables like 'max_allowed_packet'; 查看结果集的最大大小限制,会伴随‘ Your SQL statement was too large.’的报错,需优化SQL语句,或修改此参数的值。set global max_allowed_packet=1024*1024*16;
4、还有一种情况是:SQL语句过长也可能报这个错误,不知道为啥~~~ ### 解决
1、延长数据库的连接时长,修改wait_timeout的值,不推荐。
2、代码当中修改:每次执行SQL语句前,先判断连接是否有效,无效则重新连接

问题二、pymysql.err.InterfaceError: (0, '')

# 原因一: mysql 连接自己给关闭导致的,对任何已经close的conn进行db相关操作,包括ping()都会爆出这个错误。 若出现了问题一的错误但未及时解决,仍然访问服务,会出现这个错误,因为使用了已经关闭的连接。
# 原因二: 数据库操作对象实例未注销,但是持有的数据库连接已经过期,导致后续数据库操作不能正常进行
# 原因三: 数据库连接代码在函数外
# 原因四: 连接MySQL之后没有关闭连接的操作,短时间内不会出问题,长时间保持这个连接会出现连接混乱 # 以下代码会直接抛出异常无法执行except代码段
try:
  db.ping(reconnect=True)
except:
  db = pymysql.connection(..)
findlly:
  cursor = db.cursor()
  cursor.execute(sql) # 转载
class DataSource(object):   def __init__(self):
    self.conn = self.to_connect()   def __del__(self):
    self.conn.close()   def to_connect(self):
    return pymysql.connections.Connection(params)   def is_connected(self):
    """Check if the server is alive"""
    try:
      self.conn.ping(reconnect=True)
      print("db is connecting")
    except:
      traceback.print_exc()
      self.conn = self.to_connect()
      print("db reconnect")

问题三、pymysql.err.OperationalError: (2013, Lost connection to MySQL server during query')

# 每次执行数据库操作前执行,待补充
def reConnect(self):
try:
db.ping()
except:
db = pymysql.connect(...)

MySQL server has gone away && Lost connection to MySQL server during query的更多相关文章

  1. MySQL查询过程中出现lost connection to mysql server during query 的解决办法

    window7 64位系统,MySQL5.7 问题:在使用shell进行数据表更新操作的过程,输入以下查询语句: ,; 被查询的表记录数达到500W条,在查询过程中出现如题目所示的问题,提示" ...

  2. MySQL报错解决方案:2013-Lost connection to MySQL server

    今天上课的时候,在搭建完MySQL测试环境中出现的问题,整理如下: 问题描述:搭建完MySQL,用远程连接工具(Navicat)连接时报错: 2013-Lost connection to MySQL ...

  3. mysql: Data source rejected establishment of connection, message from server: "Too many connections"

    http://www.oschina.net/question/558677_66703 com.mysql.jdbc.exceptions.MySQLNonTransientConnectionEx ...

  4. Pycharm连接Mysql失败. [08001] Could not create connection to database server.

    使用Pycharm连接MySQL时遇到如下问题,错误代码[08001] 查了很多资料归纳一下可能是如下几个原因 0.mysql.server没开 找到对应系统下的mysql.server 启动/重启命 ...

  5. navicat mysql报错误:2013 Lost connection to MySQL server during query

    好像是MySQL的navicat UI界面跟数据的连接问题,如果直接用命令导入数据的话,或许能规避这个问题.

  6. 解决idea中mysql连接失败Could not create connection to database server. Attempted reconnect 3 times. Giving up.

    原因是少一个参数,设置时区的.  解决方法: 加一个参数: serverTimezone=UTC jdbc:mysql://localhost:3306/SshProject?useUnicode=t ...

  7. Connection to 天mysql failed. [08001] Could not create connection to database server. Attempted ,报错处理方法

    https://blog.csdn.net/myzh215219/article/details/90314345 点击图上的DRIVER,然后点击GO TO DRIVER,之后更改合适的驱动. 我的 ...

  8. MySQL远程连接丢失问题解决方法Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0

    最近远程连接mysql总是提示 Lost connection 很明显这是连接初始化阶段就丢失了连接的错误 其实问题很简单,都是MySQL的配置文件默认没有为远程连接配置好,只需要更改下MySQL的配 ...

  9. 虚拟机中MySQL连接问题:Lost connection to MySQL server at 'reading initial communication packet, system error: 0 以及 host is not allowed to connect mysql

    环境:在VirtualBox中安装了Ubuntu虚拟机,网络使用了NAT模式,开启了端口转发. 局域网内其他计算机访问虚拟机中的MySQL Server出现两个问题: Lost connection ...

随机推荐

  1. 2019 C语言测试

    求一元二次方程ax² + bx + c = 0的解  a,b,c为任意整数.(10分) 编写一个口令输入程序,让用户不停输入口令,直到输对为止,假设口令为456.(8分) 输出1000-9999之间能 ...

  2. C语言学习笔记01——C语言概述

    作者:Eventi 出处:http://www.cnblogs.com/Eventi 欢迎转载,也请保留这段声明.谢谢! 1 C语言的起源 1972年,贝尔实验室的丹尼斯·里奇(Dennis Ritc ...

  3. 常见的python练习题

    1.冒泡排序 def bubble_sort(lists): len_list=len(lists) for i in range(len_list): for j in range(len_list ...

  4. centos7安装face_recognition踩各种坑

    要在阿里云服务器上部署face_recognition.用的是centos7.  千辛万苦啊.感谢网上的各种解答.回报社会,我也把各种坑写下了.整理的有点乱.不过仔细看,有干货的. 感谢这个博主Fat ...

  5. vue中is与:is的区别

    简略回答 假设父组件中有一个show数据,show="one":is="show"-->实际上是is="one" is="s ...

  6. Tomcat启动找不到项目依赖jar的解决方式

    一.背景 最近在写一个MQ框架-gmq,先写的服务端,然后写客户端.感觉服务端和客户端分成两个独立的项目不合适,于是改成了maven父子模块的形式.父项目相当于一个壳,里面包含服务端.客户端两个模块. ...

  7. VUE基础回顾2

    1.响应式 vue修改了每个添加到data上的对象,当该对象发生变化时vue会收到通知,从而实现响应式.对象的每个属性都会被替换为getter,setter方法. 有两种方式实现data对象的监听 ( ...

  8. misc_register杂项设备

    include/linux/miscdevice.h 这些字符设备不符合预先确定的字符设备范畴 设备主设备号10 struct miscdevice { int minor; //次设备号(如果设置为 ...

  9. 判断RecyclerView到达底部的几种方法

    参考文章:https://www.jianshu.com/p/c138055af5d2 1.比较lastItem的pos 通过比较当前屏幕可见最后一个item的position和整个RV的最后一个it ...

  10. es截取指定的字段返回

    SearchResponse response = client.prepareSearch(index_name).setTypes("lw_devices") .setFrom ...