summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/build/changelog/unreleased_14/7457.rst11
-rw-r--r--lib/sqlalchemy/dialects/mysql/base.py23
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)
):