ProgrammingError, not OperationalError, in modern MySQL-Python versions;
all MySQL error codes that are tested for "is disconnect" are now
checked within OperationalError and ProgrammingError regardless.
fixes #3101
.. changelog::
:version: 0.8.7
+ .. change::
+ :tags: bug, mysql
+ :versions: 1.0.0, 0.9.5
+ :tickets: 3101
+
+ MySQL error 2014 "commands out of sync" appears to be raised as a
+ ProgrammingError, not OperationalError, in modern MySQL-Python versions;
+ all MySQL error codes that are tested for "is disconnect" are now
+ checked within OperationalError and ProgrammingError regardless.
+
.. change::
:tags: bug, mysql
:versions: 1.0.0, 0.9.5
return [row['data'][0:row['gtrid_length']] for row in resultset]
def is_disconnect(self, e, connection, cursor):
- if isinstance(e, self.dbapi.OperationalError):
+ if isinstance(e, (self.dbapi.OperationalError, self.dbapi.ProgrammingError)):
return self._extract_error_code(e) in \
(2006, 2013, 2014, 2045, 2055)
elif isinstance(e, self.dbapi.InterfaceError):