diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2019-11-11 16:17:50 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2019-11-11 16:17:50 -0500 |
commit | 31a66b5add39b9193975f9995ce5cd9235179f00 (patch) | |
tree | bfd43a0c6cc3dfd8187b29bcc2f4b7d709db3048 /lib/sqlalchemy/dialects/mysql/pymysql.py | |
parent | 5c7754d685df3715da76327c7401e99177611daf (diff) | |
download | sqlalchemy-31a66b5add39b9193975f9995ce5cd9235179f00.tar.gz |
Detect PyMySQL connection was killed
Added "Connection was killed" message interpreted from the base
pymysql.Error class in order to detect closed connection, based on reports
that this message is arriving via a pymysql.InternalError() object which
indicates pymysql is not handling it correctly.
Change-Id: If6bbe0eb5993e1996c0c5de752eebaf7446cf93e
References: https://github.com/PyMySQL/PyMySQL/issues/816
Fixes: #4945
Diffstat (limited to 'lib/sqlalchemy/dialects/mysql/pymysql.py')
-rw-r--r-- | lib/sqlalchemy/dialects/mysql/pymysql.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/sqlalchemy/dialects/mysql/pymysql.py b/lib/sqlalchemy/dialects/mysql/pymysql.py index 0b812cbb0..62de1529f 100644 --- a/lib/sqlalchemy/dialects/mysql/pymysql.py +++ b/lib/sqlalchemy/dialects/mysql/pymysql.py @@ -67,7 +67,10 @@ class MySQLDialect_pymysql(MySQLDialect_mysqldb): ): return True elif isinstance(e, self.dbapi.Error): - return "Already closed" in str(e) + str_e = str(e).lower() + return ( + "already closed" in str_e or "connection was killed" in str_e + ) else: return False |