diff options
author | mike bayer <mike_mp@zzzcomputing.com> | 2021-12-16 16:08:33 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@ci3.zzzcomputing.com> | 2021-12-16 16:08:33 +0000 |
commit | 3543fcc9c9601e81560d055ceadaea05c75815c0 (patch) | |
tree | e0287f4fced80f1ec41f723c5c7fe6d81f07127c | |
parent | 11c879e7ebe5947b9733b2c16adc0c106d3ce085 (diff) | |
parent | 3a33fa8b0acd9220ef4428ac6a56ebd8d40c3762 (diff) | |
download | sqlalchemy-3543fcc9c9601e81560d055ceadaea05c75815c0.tar.gz |
Merge "include InterfaceError for mariadb disconnect check" into main
-rw-r--r-- | doc/build/changelog/unreleased_14/7457.rst | 11 | ||||
-rw-r--r-- | lib/sqlalchemy/dialects/mysql/base.py | 23 |
2 files changed, 25 insertions, 9 deletions
diff --git a/doc/build/changelog/unreleased_14/7457.rst b/doc/build/changelog/unreleased_14/7457.rst new file mode 100644 index 000000000..b1942b0ea --- /dev/null +++ b/doc/build/changelog/unreleased_14/7457.rst @@ -0,0 +1,11 @@ +.. change:: + :tags: bug, mariadb + :tickets: 7457 + + Corrected the error classes inspected for the "is_disconnect" check for the + ``mariadbconnector`` dialect, which was failing for disconnects that + occurred due to common MySQL/MariaDB error codes such as 2006; the DBAPI + appears to currently use the ``mariadb.InterfaceError`` exception class for + disconnect errors such as error code 2006, which has been added to the list + of classes checked. + diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index fef1ec81a..fe0624d08 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -2540,16 +2540,21 @@ class MySQLDialect(default.DefaultDialect): def is_disconnect(self, e, connection, cursor): if isinstance( - e, (self.dbapi.OperationalError, self.dbapi.ProgrammingError) + e, + ( + self.dbapi.OperationalError, + self.dbapi.ProgrammingError, + self.dbapi.InterfaceError, + ), + ) and self._extract_error_code(e) in ( + 1927, + 2006, + 2013, + 2014, + 2045, + 2055, ): - return self._extract_error_code(e) in ( - 1927, - 2006, - 2013, - 2014, - 2045, - 2055, - ) + return True elif isinstance( e, (self.dbapi.InterfaceError, self.dbapi.InternalError) ): |