From: Jon Schuff Date: Tue, 14 May 2019 20:45:10 +0000 (-0400) Subject: Recognize message 20047 as disconnect event in MSDialect_pymssql X-Git-Tag: rel_1_4_0b1~875 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=02c18e753b26aa038ce47d0b46b8f0281093d88b;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Recognize message 20047 as disconnect event in MSDialect_pymssql Added error code 20047 to "is_disconnect" for pymssql. Pull request courtesy Jon Schuff. Fixes: #4680 Closes: #4681 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/4681 Pull-request-sha: bc81c935ec0e352734d9ad1b322caf6d08079c3d Change-Id: Ifc7ffc4c933b08a34fad537dc48e05d2cfa66d42 --- diff --git a/doc/build/changelog/unreleased_13/4680.rst b/doc/build/changelog/unreleased_13/4680.rst new file mode 100644 index 0000000000..f4ed1f8f62 --- /dev/null +++ b/doc/build/changelog/unreleased_13/4680.rst @@ -0,0 +1,7 @@ +.. change:: + :tags: bug, mssql + :tickets: 4680 + + Added error code 20047 to "is_disconnect" for pymssql. Pull request + courtesy Jon Schuff. + diff --git a/lib/sqlalchemy/dialects/mssql/pymssql.py b/lib/sqlalchemy/dialects/mssql/pymssql.py index b46c0a3f01..d8033f2829 100644 --- a/lib/sqlalchemy/dialects/mssql/pymssql.py +++ b/lib/sqlalchemy/dialects/mssql/pymssql.py @@ -98,6 +98,7 @@ class MSDialect_pymssql(MSDialect): "Connection is closed", "message 20006", # Write to the server failed "message 20017", # Unexpected EOF from the server + "message 20047", # DBPROCESS is dead or not enabled ): if msg in str(e): return True diff --git a/test/dialect/mssql/test_engine.py b/test/dialect/mssql/test_engine.py index 431b20c7a1..257e41bf83 100644 --- a/test/dialect/mssql/test_engine.py +++ b/test/dialect/mssql/test_engine.py @@ -292,6 +292,9 @@ class ParseConnectTest(fixtures.TestBase): "Error 10054", "Not connected to any MS SQL server", "Connection is closed", + "message 20006", # Write to the server failed + "message 20017", # Unexpected EOF from the server + "message 20047", # DBPROCESS is dead or not enabled ]: eq_(dialect.is_disconnect(error, None, None), True)