From: Mike Bayer Date: Wed, 5 Aug 2020 14:31:21 +0000 (-0400) Subject: Add MariaDB 1927 to is_disconnect codes X-Git-Tag: rel_1_3_19~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c0e76578f17309eaef6724cdfd16d3382df5f2a3;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Add MariaDB 1927 to is_disconnect codes Added MariaDB code 1927 to the list of "disconnect" codes, as recent MariaDB versions apparently use this code when the database server was stopped. Fixes: #5493 Change-Id: I63f1d692f36cb0411ead278556e3f8c64ab72ea4 (cherry picked from commit 2a946254023135eddd222974cf300ffaa5583f02) --- diff --git a/doc/build/changelog/unreleased_13/5493.rst b/doc/build/changelog/unreleased_13/5493.rst new file mode 100644 index 0000000000..a1f9f44b2c --- /dev/null +++ b/doc/build/changelog/unreleased_13/5493.rst @@ -0,0 +1,7 @@ +.. change:: + :tags: bug, mysql + :tickets: 5493 + + Added MariaDB code 1927 to the list of "disconnect" codes, as recent + MariaDB versions apparently use this code when the database server was + stopped. diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index 87d35587aa..c652693246 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -2508,6 +2508,7 @@ class MySQLDialect(default.DefaultDialect): e, (self.dbapi.OperationalError, self.dbapi.ProgrammingError) ): return self._extract_error_code(e) in ( + 1927, 2006, 2013, 2014, diff --git a/test/dialect/mysql/test_dialect.py b/test/dialect/mysql/test_dialect.py index 2f199de843..53ceefa696 100644 --- a/test/dialect/mysql/test_dialect.py +++ b/test/dialect/mysql/test_dialect.py @@ -28,6 +28,8 @@ class DialectTest(fixtures.TestBase): (None, "cONnection was kILLEd", "InternalError", "pymysql", True), (None, "cONnection aLREady closed", "InternalError", "pymysql", True), (None, "something broke", "InternalError", "pymysql", False), + (1927, "Connection was killed", "OperationalError", "pymysql", True), + (1927, "Connection was killed", "OperationalError", "mysqldb", True), (2006, "foo", "OperationalError", "mysqldb", True), (2006, "foo", "OperationalError", "pymysql", True), (2007, "foo", "OperationalError", "mysqldb", False),