MySQL server has gone away && Lost connection to MySQL server during query
问题一、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的更多相关文章
- MySQL查询过程中出现lost connection to mysql server during query 的解决办法
window7 64位系统,MySQL5.7 问题:在使用shell进行数据表更新操作的过程,输入以下查询语句: ,; 被查询的表记录数达到500W条,在查询过程中出现如题目所示的问题,提示" ...
- MySQL报错解决方案:2013-Lost connection to MySQL server
今天上课的时候,在搭建完MySQL测试环境中出现的问题,整理如下: 问题描述:搭建完MySQL,用远程连接工具(Navicat)连接时报错: 2013-Lost connection to MySQL ...
- 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 ...
- Pycharm连接Mysql失败. [08001] Could not create connection to database server.
使用Pycharm连接MySQL时遇到如下问题,错误代码[08001] 查了很多资料归纳一下可能是如下几个原因 0.mysql.server没开 找到对应系统下的mysql.server 启动/重启命 ...
- navicat mysql报错误:2013 Lost connection to MySQL server during query
好像是MySQL的navicat UI界面跟数据的连接问题,如果直接用命令导入数据的话,或许能规避这个问题.
- 解决idea中mysql连接失败Could not create connection to database server. Attempted reconnect 3 times. Giving up.
原因是少一个参数,设置时区的. 解决方法: 加一个参数: serverTimezone=UTC jdbc:mysql://localhost:3306/SshProject?useUnicode=t ...
- 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,之后更改合适的驱动. 我的 ...
- MySQL远程连接丢失问题解决方法Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0
最近远程连接mysql总是提示 Lost connection 很明显这是连接初始化阶段就丢失了连接的错误 其实问题很简单,都是MySQL的配置文件默认没有为远程连接配置好,只需要更改下MySQL的配 ...
- 虚拟机中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 ...
随机推荐
- ZLC众利币系统APP开发
开发版本:APP 开发语言:php,java,.net 下面我们来看一下tp5 分页具体怎么用: 一, 分页简洁版 简洁分页仅仅只有上下页的分页输出,可以使用下面的简洁分页代码: // 查询状态为1的 ...
- (七)pdf的构成之文件体(page对象)
页面(page) 通过页面树访问文档的页面,页面树定义PDF文档中的所有页面.树包含表示PDF文档页面的节点,可以是两种类型:中间节点和叶节点.中间节点也称为页面树节点,而叶节点称为页面对象.最简单的 ...
- elasticsearch配置文件中http.cors.x字段有哪些用途和用法
http.cors.enabled 是否支持跨域,默认为false http.cors.allow-origin 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使 ...
- Spring Security 解析(一) —— 授权过程
Spring Security 解析(一) -- 授权过程 在学习Spring Cloud 时,遇到了授权服务oauth 相关内容时,总是一知半解,因此决定先把Spring Security .S ...
- .net 后台以post方式调用微信公众平台接口
public class Fresult { public int errcode { get; set; } public string errmsg { get; set; } public st ...
- 微服务架构ServiceMesh
公司用的架构,在此找了资料作为记录复看所用: 什么是Service Mesh? Service Mesh的概念最早是由Buoyant公司的CEO William Morgan在一篇文章里提出,他给出的 ...
- 1+X证书学习日志——javascript基础
js javascript js的组成: ECMAscript DOM BOM js放置的位置 <script></script> <script src="路 ...
- Spark实现二次排序
一.代码实现 package big.data.analyse.scala.secondsort import org.apache.log4j.{Level, Logger} import org. ...
- MySQL Case--Strict mode与NOT NULL
事故回溯 某业务流程操作为: 1.循环扫描某张待处理请求表,查看是否有请求等待处理. 2.找到待处理请求后,申请相关资源进行处理,并将处理结果插入到处理结果表中. 3.将该请求从待处理请求表中移除. ...
- chattr和lsattr命令
原文 在一个技术群上看到这么一个问题: 问题出现在服务器被黑后!特意出记录下问题的解决方法. 由于被黑了,所以我们的很多命令将会出现使用不正常等问题,而这些问题大多是给人家添加或删除了某些权限所致.比 ...