1. “MySQL has Gone Away”
mysql出现ERROR: (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQLserver之间的链接断开了。造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert... values的语句过长
原因一. MySQL 服务宕了
判断是否属于这个原因的方法很简单,进入mysql控制台,查看mysql的运行时长
mysql> show global status like 'uptime';
原因二. mysql连接超时
即某个mysql长连接很久没有新的请求发起,达到了server端的timeout,被server强行关闭。此后再通过这个connection发起查询的时候,就会报错server has gone away
原因三. mysql请求链接进程被主动kill
这种情况和原因二相似,只是一个是人为一个是MYSQL自己的动作
mysql> show global status like 'com_kill';
原因四. YourSQL statement was too large.
当查询的结果集超过max_allowed_packet 也会出现这样的报错。定位方法是打出相关报错的语句。用select* into outfile 的方式导出到文件,查看文件大小是否超过max_allowed_packet ,如果超过则需要调整参数,或者优化语句。
2.Python mysqldb 执行execute()时出现InterfaceError:(0,’’)
对任何已经close的conn进行 db相关 操作,包括ping()都会爆出这个错误。(这说明 长时间idle导致的conn失效与conn.close()之后的状态是不一样的)精确catch 这个错误的Exception 是MySQLdb.Error
conn.close()写早了,一个py文件里只要有一个close()就够