summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/mysql/pymysql.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2019-11-11 16:17:50 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2019-11-11 16:17:50 -0500
commit31a66b5add39b9193975f9995ce5cd9235179f00 (patch)
treebfd43a0c6cc3dfd8187b29bcc2f4b7d709db3048 /lib/sqlalchemy/dialects/mysql/pymysql.py
parent5c7754d685df3715da76327c7401e99177611daf (diff)
downloadsqlalchemy-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.py5
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