一、(2006, 'MySQL server has gone away')
-
错误原因
从字面理解,就是你连接的MySQL已经走人了,不在了。相当于你和另外一个人打电话,你一直没有挂电话,但是你把电话放一边了,直到你重新拎起电话想说点啥,才听到里面『嘟,嘟,嘟,嘟...』的挂机声,于是你就知道电话另一头的人已经gone away了。
线上碰到这个问题时,通常就是抛一个异常,然后(主动/被动)重新连接一下,你下次就重新执行一下要执行的语句就行。这就像你觉得有一番话非说不可,然后重新拨了个电话过去。
什么情况下会gone away?就像刚才说的,当你拿着一个电话太久,又不说话的时候,对面肯定就把你挂了;当sqlalchemy与MySQL建立了一个连接,而sqlalchemy又不对这个连接执行任何(有含义)的语句,这个连接对于MySQL而言就处于sleep,当sleep了太久,MySQL就把连接一头关闭了(可能说了句"啥玩意儿"),这时,如果sqlalchemy在这个连接上尝试执行语句,就会出现gone away的错误。