summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2013-04-29 19:50:49 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2013-04-29 19:50:49 -0400
commite082ca503c6aa91d3fe7ac466457045af0439f71 (patch)
treece5fd7c64dd42d0ff67034841b8491df47e0852d
parent093c322719c0acb6b37836d5e7eacbaae072e478 (diff)
parentba5ac0f2a559daddfebfcfa913d7d73de28e427e (diff)
downloadsqlalchemy-e082ca503c6aa91d3fe7ac466457045af0439f71.tar.gz
merge default
-rw-r--r--doc/build/changelog/changelog_08.rst10
-rw-r--r--lib/sqlalchemy/__init__.py2
-rw-r--r--lib/sqlalchemy/dialects/mysql/mysqlconnector.py3
-rw-r--r--test/engine/test_reconnect.py19
4 files changed, 19 insertions, 15 deletions
diff --git a/doc/build/changelog/changelog_08.rst b/doc/build/changelog/changelog_08.rst
index 3fda776f2..ed9539891 100644
--- a/doc/build/changelog/changelog_08.rst
+++ b/doc/build/changelog/changelog_08.rst
@@ -4,6 +4,16 @@
==============
.. changelog::
+ :version: 0.8.2
+
+ .. change::
+ :tags: bug, mysql
+
+ Updated mysqlconnector dialect to check for disconnect based
+ on the apparent string message sent in the exception; tested
+ against mysqlconnector 1.0.9.
+
+.. changelog::
:version: 0.8.1
:released: April 27, 2013
diff --git a/lib/sqlalchemy/__init__.py b/lib/sqlalchemy/__init__.py
index d92b81eac..5b7123b6e 100644
--- a/lib/sqlalchemy/__init__.py
+++ b/lib/sqlalchemy/__init__.py
@@ -120,7 +120,7 @@ from .engine import create_engine, engine_from_config
__all__ = sorted(name for name, obj in list(locals().items())
if not (name.startswith('_') or _inspect.ismodule(obj)))
-__version__ = '0.8.1'
+__version__ = '0.8.2'
del _inspect, sys
diff --git a/lib/sqlalchemy/dialects/mysql/mysqlconnector.py b/lib/sqlalchemy/dialects/mysql/mysqlconnector.py
index 0a1a6b91e..b1906d3b9 100644
--- a/lib/sqlalchemy/dialects/mysql/mysqlconnector.py
+++ b/lib/sqlalchemy/dialects/mysql/mysqlconnector.py
@@ -113,7 +113,8 @@ class MySQLDialect_mysqlconnector(MySQLDialect):
errnos = (2006, 2013, 2014, 2045, 2055, 2048)
exceptions = (self.dbapi.OperationalError, self.dbapi.InterfaceError)
if isinstance(e, exceptions):
- return e.errno in errnos
+ return e.errno in errnos or \
+ "MySQL Connection not available." in str(e)
else:
return False
diff --git a/test/engine/test_reconnect.py b/test/engine/test_reconnect.py
index d75ef3b75..2b2824cb2 100644
--- a/test/engine/test_reconnect.py
+++ b/test/engine/test_reconnect.py
@@ -617,19 +617,12 @@ class InvalidateDuringResultTest(fixtures.TestBase):
meta.drop_all()
engine.dispose()
- @testing.fails_on('+cymysql',
- "Buffers the result set and doesn't check for "
- "connection close")
- @testing.fails_on('+pymysql',
- "Buffers the result set and doesn't check for "
- "connection close")
- @testing.fails_on('+mysqldb',
- "Buffers the result set and doesn't check for "
- "connection close")
- @testing.fails_on('+pg8000',
- "Buffers the result set and doesn't check for "
- "connection close")
- @testing.fails_on('+informixdb',
+ @testing.fails_if([
+ '+mysqlconnector', '+mysqldb'
+ '+cymysql', '+pymysql', '+pg8000'
+ ], "Buffers the result set and doesn't check for "
+ "connection close")
+ @testing.fails_if('+informixdb',
"Wrong error thrown, fix in informixdb?")
def test_invalidate_on_results(self):
conn = engine.connect()