Re: [sqlalchemy] Sudden Connection issues
Hi All Just to put closure on this issue, I finally sorted it out as a bug in the connector. This has now been resolved and the latest build has the correction. :-) As a matter of interest, the line db.conn.protocol should have been db.protocol.. Anyway - all's well that ends well.. :-) Cheers Warwick On Aug 27, 2010, at 4:39 AM, Warwick Prince wrote: Hi Michael OK, I've invested (wasted?) my entire day on this connection issue and have the following to report. Hopefully, the hints I've managed to find may trigger something with you that will point me in the right direction. In recap; the issue was I could not get a simple engine to connect to the MySQL database. This used to work on this server with the current configuration and simply seemed to stop working. e = create_engine('mysql+mysqlconnector://user:passw...@127.0.0.1/testdb', encoding='utf8', echo=False) e.connect() (Traceback below from previous messages) So, I followed all the code through and found that it actually failing at the point where in cursor.py it's attempting to create a new cursor. def set_connection(self, db): try: if isinstance(db.conn.protocol,protocol.MySQLProtocol): self.db = weakref.ref(db) if self not in self.db().cursors: self.db().cursors.append(self) except Exception as message: raise errors.InterfaceError(errno=2048) The db appears to be correct (I looked), protocol.MySQLProtocol appears to be correct BUT db.conn = None ! Therefore it raises 2048 So, after many hours I can not find where db.conn is set or what it is supposed to be in the first place!Note: I have a virtually identical setup on my XP VM, and the same example of engine.connect() works fine. What I'm looking for is a little info on what db.conn should be, where is it set, how can it be NOT set etc.Your help would be most appreciated. Incidentally, all was not a waste of time as I traversed nearly ALL of the SA code today and picked up a few nice tips.. Thanks! :-) Well, that above is not part of SQLAlchemy. I would assume, since its called cursor.py and is dealing with MySQL internals, that its part of MySQL connector, so you should email on their list (and also you can test things without SQLAlchemy at all, just use a script with MySQL connector directly). -- You received this message because you are subscribed to the Google Groups sqlalchemy group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en. -- You received this message because you are subscribed to the Google Groups sqlalchemy group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
Re: [sqlalchemy] Sudden Connection issues
Hi Michael OK, I've invested (wasted?) my entire day on this connection issue and have the following to report. Hopefully, the hints I've managed to find may trigger something with you that will point me in the right direction. In recap; the issue was I could not get a simple engine to connect to the MySQL database. This used to work on this server with the current configuration and simply seemed to stop working. e = create_engine('mysql+mysqlconnector://user:passw...@127.0.0.1/testdb', encoding='utf8', echo=False) e.connect() (Traceback below from previous messages) So, I followed all the code through and found that it actually failing at the point where in cursor.py it's attempting to create a new cursor. def set_connection(self, db): try: if isinstance(db.conn.protocol,protocol.MySQLProtocol): self.db = weakref.ref(db) if self not in self.db().cursors: self.db().cursors.append(self) except Exception as message: raise errors.InterfaceError(errno=2048) The db appears to be correct (I looked), protocol.MySQLProtocol appears to be correct BUT db.conn = None ! Therefore it raises 2048 So, after many hours I can not find where db.conn is set or what it is supposed to be in the first place!Note: I have a virtually identical setup on my XP VM, and the same example of engine.connect() works fine. What I'm looking for is a little info on what db.conn should be, where is it set, how can it be NOT set etc.Your help would be most appreciated. Incidentally, all was not a waste of time as I traversed nearly ALL of the SA code today and picked up a few nice tips.. Thanks! :-) Cheers Warwick Warwick Prince Managing Director mobile: +61 411 026 992 skype: warwickprince phone: +61 7 3102 3730 fax: +61 7 3319 6734 web: www.mushroomsys.com On 26/08/2010, at 3:37 PM, Michael Bayer wrote: On Aug 25, 2010, at 11:09 PM, Warwick Prince wrote: HI Michael Excellent. Thanks for the pointers - I'll investigate further and get back to you. This is really strange as I do not believe that I changed anything from the point it all worked, to the point at which it didn't! (I'm sure there will be something however - there always is..). :-) I'll let you know how I go. When I get it going again, I'll hit you with the REAL questions I have.. those connection issues are fixed in tip (not your MySQL problem, though). Cheers Warwick On 26/08/2010, at 12:43 PM, Michael Bayer wrote: On Aug 25, 2010, at 10:11 PM, Warwick Prince wrote: Hi All This is my first post here, so I wish it were a little more spectacular.. :-) I have been working happily with SA 0.6.x on Windows 2003 server with MySQL and the Sun Python Connector. I have an identical config running (and working) on XP. I was testing my code which had been working perfectly, and suddenly started getting this message which I had never seen before; Traceback (most recent call last): File pyshell#3, line 1, in module e.connect() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1731, in connect return self.Connection(self, **kwargs) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 821, in __init__ self.__connection = connection or engine.raw_connection() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1787, in raw_connection return self.pool.unique_connection() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 135, in unique_connection return _ConnectionFairy(self).checkout() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 329, in __init__ rec = self._connection_record = pool.get() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 177, in get return self.do_get() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 692, in do_get con = self.create_connection() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 138, in create_connection return _ConnectionRecord(self) File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 218, in __init__ l.first_connect(self.connection, self) File C:\Python26\lib\site-packages\sqlalchemy\engine\strategies.py, line 145, in first_connect dialect.initialize(c) File C:\Python26\lib\site-packages\sqlalchemy\dialects\mysql\base.py, line 1774, in initialize default.DefaultDialect.initialize(self, connection) File C:\Python26\lib\site-packages\sqlalchemy\engine\default.py, line 144, in initialize self._get_default_schema_name(connection) File C:\Python26\lib\site-packages\sqlalchemy\dialects\mysql\base.py, line 1739, in _get_default_schema_name return connection.execute('SELECT DATABASE()').scalar() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1157, in execute params) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1252, in _execute_text
Re: [sqlalchemy] Sudden Connection issues
On Aug 27, 2010, at 4:39 AM, Warwick Prince wrote: Hi Michael OK, I've invested (wasted?) my entire day on this connection issue and have the following to report. Hopefully, the hints I've managed to find may trigger something with you that will point me in the right direction. In recap; the issue was I could not get a simple engine to connect to the MySQL database. This used to work on this server with the current configuration and simply seemed to stop working. e = create_engine('mysql+mysqlconnector://user:passw...@127.0.0.1/testdb', encoding='utf8', echo=False) e.connect() (Traceback below from previous messages) So, I followed all the code through and found that it actually failing at the point where in cursor.py it's attempting to create a new cursor. def set_connection(self, db): try: if isinstance(db.conn.protocol,protocol.MySQLProtocol): self.db = weakref.ref(db) if self not in self.db().cursors: self.db().cursors.append(self) except Exception as message: raise errors.InterfaceError(errno=2048) The db appears to be correct (I looked), protocol.MySQLProtocol appears to be correct BUT db.conn = None ! Therefore it raises 2048 So, after many hours I can not find where db.conn is set or what it is supposed to be in the first place!Note: I have a virtually identical setup on my XP VM, and the same example of engine.connect() works fine. What I'm looking for is a little info on what db.conn should be, where is it set, how can it be NOT set etc.Your help would be most appreciated. Incidentally, all was not a waste of time as I traversed nearly ALL of the SA code today and picked up a few nice tips.. Thanks! :-) Well, that above is not part of SQLAlchemy. I would assume, since its called cursor.py and is dealing with MySQL internals, that its part of MySQL connector, so you should email on their list (and also you can test things without SQLAlchemy at all, just use a script with MySQL connector directly). -- You received this message because you are subscribed to the Google Groups sqlalchemy group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
Re: [sqlalchemy] Sudden Connection issues
Hi Michael Sorry about that - it had been a long day and I didn't realise I was quoting code from the connector! I'll get onto them and see if they can help. Cheers Warwick Warwick Prince Managing Director mobile: +61 411 026 992 skype: warwickprince phone: +61 7 3102 3730 fax: +61 7 3319 6734 web: www.mushroomsys.com On 27/08/2010, at 11:40 PM, Michael Bayer wrote: On Aug 27, 2010, at 4:39 AM, Warwick Prince wrote: Hi Michael OK, I've invested (wasted?) my entire day on this connection issue and have the following to report. Hopefully, the hints I've managed to find may trigger something with you that will point me in the right direction. In recap; the issue was I could not get a simple engine to connect to the MySQL database. This used to work on this server with the current configuration and simply seemed to stop working. e = create_engine('mysql+mysqlconnector://user:passw...@127.0.0.1/testdb', encoding='utf8', echo=False) e.connect() (Traceback below from previous messages) So, I followed all the code through and found that it actually failing at the point where in cursor.py it's attempting to create a new cursor. def set_connection(self, db): try: if isinstance(db.conn.protocol,protocol.MySQLProtocol): self.db = weakref.ref(db) if self not in self.db().cursors: self.db().cursors.append(self) except Exception as message: raise errors.InterfaceError(errno=2048) The db appears to be correct (I looked), protocol.MySQLProtocol appears to be correct BUT db.conn = None ! Therefore it raises 2048 So, after many hours I can not find where db.conn is set or what it is supposed to be in the first place!Note: I have a virtually identical setup on my XP VM, and the same example of engine.connect() works fine. What I'm looking for is a little info on what db.conn should be, where is it set, how can it be NOT set etc.Your help would be most appreciated. Incidentally, all was not a waste of time as I traversed nearly ALL of the SA code today and picked up a few nice tips.. Thanks! :-) Well, that above is not part of SQLAlchemy. I would assume, since its called cursor.py and is dealing with MySQL internals, that its part of MySQL connector, so you should email on their list (and also you can test things without SQLAlchemy at all, just use a script with MySQL connector directly). -- You received this message because you are subscribed to the Google Groups sqlalchemy group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en. -- You received this message because you are subscribed to the Google Groups sqlalchemy group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
[sqlalchemy] Sudden Connection issues
Hi All This is my first post here, so I wish it were a little more spectacular.. :-) I have been working happily with SA 0.6.x on Windows 2003 server with MySQL and the Sun Python Connector. I have an identical config running (and working) on XP. I was testing my code which had been working perfectly, and suddenly started getting this message which I had never seen before; Traceback (most recent call last): File pyshell#3, line 1, in module e.connect() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1731, in connect return self.Connection(self, **kwargs) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 821, in __init__ self.__connection = connection or engine.raw_connection() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1787, in raw_connection return self.pool.unique_connection() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 135, in unique_connection return _ConnectionFairy(self).checkout() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 329, in __init__ rec = self._connection_record = pool.get() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 177, in get return self.do_get() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 692, in do_get con = self.create_connection() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 138, in create_connection return _ConnectionRecord(self) File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 218, in __init__ l.first_connect(self.connection, self) File C:\Python26\lib\site-packages\sqlalchemy\engine\strategies.py, line 145, in first_connect dialect.initialize(c) File C:\Python26\lib\site-packages\sqlalchemy\dialects\mysql\base.py, line 1774, in initialize default.DefaultDialect.initialize(self, connection) File C:\Python26\lib\site-packages\sqlalchemy\engine\default.py, line 144, in initialize self._get_default_schema_name(connection) File C:\Python26\lib\site-packages\sqlalchemy\dialects\mysql\base.py, line 1739, in _get_default_schema_name return connection.execute('SELECT DATABASE()').scalar() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1157, in execute params) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1252, in _execute_text parameters=parameters) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1348, in __create_execution_context None, None) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1311, in _handle_dbapi_exception self.invalidate(e) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 961, in invalidate if self.__connection.is_valid: AttributeError: 'MySQL' object has no attribute 'is_valid' I have spent a significant amount of time on this, and nothing makes sense. I've run the unittest.py code that comes with the connector, and (connecting to the same DB) ran the tests with success. Firstly, it would appear that there is a possible bug in base.py at line 962 where it asks if self.__connection.is_valid: as this attribute has not been created yet, and is conditionally created. However, this is not the root of the issue, merely a distraction. (I forced this to exist and have a value, but the problem just fell through to further down the code) I can get this error by simply doing this (now) when this all has worked for days. e = create_engine('mysql+mysqlconnector://user:passw...@127.0.0.1/testdb', encoding='utf8', echo=False) e.connect() Any clues - as this is driving me nuts! Can't do ANYTHING now because I an no longer connect to the DB. DB manager and other tools all show MySQL happily ticking along. I have rebooted the server. As a possible solution, are there any other stable MySQL connectors out there that are easy to install on a Windows platform? The Python Connector one chosen has been good so far, but if that turns out to be the issue - it's gone! Cheers Warwick -- You received this message because you are subscribed to the Google Groups sqlalchemy group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
Re: [sqlalchemy] Sudden Connection issues
On Aug 25, 2010, at 10:11 PM, Warwick Prince wrote: Hi All This is my first post here, so I wish it were a little more spectacular.. :-) I have been working happily with SA 0.6.x on Windows 2003 server with MySQL and the Sun Python Connector. I have an identical config running (and working) on XP. I was testing my code which had been working perfectly, and suddenly started getting this message which I had never seen before; Traceback (most recent call last): File pyshell#3, line 1, in module e.connect() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1731, in connect return self.Connection(self, **kwargs) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 821, in __init__ self.__connection = connection or engine.raw_connection() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1787, in raw_connection return self.pool.unique_connection() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 135, in unique_connection return _ConnectionFairy(self).checkout() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 329, in __init__ rec = self._connection_record = pool.get() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 177, in get return self.do_get() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 692, in do_get con = self.create_connection() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 138, in create_connection return _ConnectionRecord(self) File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 218, in __init__ l.first_connect(self.connection, self) File C:\Python26\lib\site-packages\sqlalchemy\engine\strategies.py, line 145, in first_connect dialect.initialize(c) File C:\Python26\lib\site-packages\sqlalchemy\dialects\mysql\base.py, line 1774, in initialize default.DefaultDialect.initialize(self, connection) File C:\Python26\lib\site-packages\sqlalchemy\engine\default.py, line 144, in initialize self._get_default_schema_name(connection) File C:\Python26\lib\site-packages\sqlalchemy\dialects\mysql\base.py, line 1739, in _get_default_schema_name return connection.execute('SELECT DATABASE()').scalar() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1157, in execute params) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1252, in _execute_text parameters=parameters) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1348, in __create_execution_context None, None) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1311, in _handle_dbapi_exception self.invalidate(e) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 961, in invalidate if self.__connection.is_valid: AttributeError: 'MySQL' object has no attribute 'is_valid' I have spent a significant amount of time on this, and nothing makes sense. I've run the unittest.py code that comes with the connector, and (connecting to the same DB) ran the tests with success. Firstly, it would appear that there is a possible bug in base.py at line 962 where it asks if self.__connection.is_valid: as this attribute has not been created yet, and is conditionally created. __connection is created in the constructor, and it may get del'ed by close or invalidate. There's a check for closed right there, so its only if invalidate() is called twice that there'd be an issue. But that's not what's happening here, since __connection is present. Its still a bug on our part though, partially, there's an edge case where the __connection member is not the usual ConnectionFairy wrapper we use, and is the raw DBAPI connection, and that is during the initilization phase of a new connection. In your stack trace, a new connection is acquired from the DBAPI, and we're calling SELECT DATABASE() on it. That is failing. Very unusually, it is failing with an exception that passes the is_disconnect test, which means the errno is in (2006, 2013, 2014, 2045, 2055, 2048) according to the mysqlconnector dialect, and means the connection has been lost. Interestingly, that is one more code than we have in base.py. So that list of codes is suspect (the myconnpy guys provided some of this code) - the base list used by the other MySQL dialects is (2006, 2013, 2014, 2045, 2055). The exception then passes off to invalidate() which wasn't expecting a raw DBAPI connection and it breaks. Ticket #1894 is added. For the immediate issue you'd need to figure out what error SELECT DATABASE() is returning. However, this is not the root of the issue, merely a distraction. (I forced this to exist and have a value, but the problem just fell through to further down the code) I can get this error by simply doing this (now) when this all has worked for days. e =
Re: [sqlalchemy] Sudden Connection issues
HI Michael Excellent. Thanks for the pointers - I'll investigate further and get back to you. This is really strange as I do not believe that I changed anything from the point it all worked, to the point at which it didn't! (I'm sure there will be something however - there always is..). :-) I'll let you know how I go. When I get it going again, I'll hit you with the REAL questions I have.. Cheers Warwick On 26/08/2010, at 12:43 PM, Michael Bayer wrote: On Aug 25, 2010, at 10:11 PM, Warwick Prince wrote: Hi All This is my first post here, so I wish it were a little more spectacular.. :-) I have been working happily with SA 0.6.x on Windows 2003 server with MySQL and the Sun Python Connector. I have an identical config running (and working) on XP. I was testing my code which had been working perfectly, and suddenly started getting this message which I had never seen before; Traceback (most recent call last): File pyshell#3, line 1, in module e.connect() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1731, in connect return self.Connection(self, **kwargs) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 821, in __init__ self.__connection = connection or engine.raw_connection() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1787, in raw_connection return self.pool.unique_connection() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 135, in unique_connection return _ConnectionFairy(self).checkout() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 329, in __init__ rec = self._connection_record = pool.get() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 177, in get return self.do_get() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 692, in do_get con = self.create_connection() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 138, in create_connection return _ConnectionRecord(self) File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 218, in __init__ l.first_connect(self.connection, self) File C:\Python26\lib\site-packages\sqlalchemy\engine\strategies.py, line 145, in first_connect dialect.initialize(c) File C:\Python26\lib\site-packages\sqlalchemy\dialects\mysql\base.py, line 1774, in initialize default.DefaultDialect.initialize(self, connection) File C:\Python26\lib\site-packages\sqlalchemy\engine\default.py, line 144, in initialize self._get_default_schema_name(connection) File C:\Python26\lib\site-packages\sqlalchemy\dialects\mysql\base.py, line 1739, in _get_default_schema_name return connection.execute('SELECT DATABASE()').scalar() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1157, in execute params) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1252, in _execute_text parameters=parameters) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1348, in __create_execution_context None, None) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1311, in _handle_dbapi_exception self.invalidate(e) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 961, in invalidate if self.__connection.is_valid: AttributeError: 'MySQL' object has no attribute 'is_valid' I have spent a significant amount of time on this, and nothing makes sense. I've run the unittest.py code that comes with the connector, and (connecting to the same DB) ran the tests with success. Firstly, it would appear that there is a possible bug in base.py at line 962 where it asks if self.__connection.is_valid: as this attribute has not been created yet, and is conditionally created. __connection is created in the constructor, and it may get del'ed by close or invalidate. There's a check for closed right there, so its only if invalidate() is called twice that there'd be an issue. But that's not what's happening here, since __connection is present. Its still a bug on our part though, partially, there's an edge case where the __connection member is not the usual ConnectionFairy wrapper we use, and is the raw DBAPI connection, and that is during the initilization phase of a new connection. In your stack trace, a new connection is acquired from the DBAPI, and we're calling SELECT DATABASE() on it. That is failing. Very unusually, it is failing with an exception that passes the is_disconnect test, which means the errno is in (2006, 2013, 2014, 2045, 2055, 2048) according to the mysqlconnector dialect, and means the connection has been lost. Interestingly, that is one more code than we have in base.py. So that list of codes is suspect (the myconnpy guys provided some of this code) - the base list used by the other MySQL dialects is (2006, 2013, 2014, 2045, 2055). The exception then passes off to invalidate() which wasn't expecting a raw
Re: [sqlalchemy] Sudden Connection issues
On Aug 25, 2010, at 11:09 PM, Warwick Prince wrote: HI Michael Excellent. Thanks for the pointers - I'll investigate further and get back to you. This is really strange as I do not believe that I changed anything from the point it all worked, to the point at which it didn't! (I'm sure there will be something however - there always is..). :-) I'll let you know how I go. When I get it going again, I'll hit you with the REAL questions I have.. those connection issues are fixed in tip (not your MySQL problem, though). Cheers Warwick On 26/08/2010, at 12:43 PM, Michael Bayer wrote: On Aug 25, 2010, at 10:11 PM, Warwick Prince wrote: Hi All This is my first post here, so I wish it were a little more spectacular.. :-) I have been working happily with SA 0.6.x on Windows 2003 server with MySQL and the Sun Python Connector. I have an identical config running (and working) on XP. I was testing my code which had been working perfectly, and suddenly started getting this message which I had never seen before; Traceback (most recent call last): File pyshell#3, line 1, in module e.connect() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1731, in connect return self.Connection(self, **kwargs) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 821, in __init__ self.__connection = connection or engine.raw_connection() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1787, in raw_connection return self.pool.unique_connection() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 135, in unique_connection return _ConnectionFairy(self).checkout() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 329, in __init__ rec = self._connection_record = pool.get() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 177, in get return self.do_get() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 692, in do_get con = self.create_connection() File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 138, in create_connection return _ConnectionRecord(self) File C:\Python26\lib\site-packages\sqlalchemy\pool.py, line 218, in __init__ l.first_connect(self.connection, self) File C:\Python26\lib\site-packages\sqlalchemy\engine\strategies.py, line 145, in first_connect dialect.initialize(c) File C:\Python26\lib\site-packages\sqlalchemy\dialects\mysql\base.py, line 1774, in initialize default.DefaultDialect.initialize(self, connection) File C:\Python26\lib\site-packages\sqlalchemy\engine\default.py, line 144, in initialize self._get_default_schema_name(connection) File C:\Python26\lib\site-packages\sqlalchemy\dialects\mysql\base.py, line 1739, in _get_default_schema_name return connection.execute('SELECT DATABASE()').scalar() File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1157, in execute params) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1252, in _execute_text parameters=parameters) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1348, in __create_execution_context None, None) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 1311, in _handle_dbapi_exception self.invalidate(e) File C:\Python26\lib\site-packages\sqlalchemy\engine\base.py, line 961, in invalidate if self.__connection.is_valid: AttributeError: 'MySQL' object has no attribute 'is_valid' I have spent a significant amount of time on this, and nothing makes sense. I've run the unittest.py code that comes with the connector, and (connecting to the same DB) ran the tests with success. Firstly, it would appear that there is a possible bug in base.py at line 962 where it asks if self.__connection.is_valid: as this attribute has not been created yet, and is conditionally created. __connection is created in the constructor, and it may get del'ed by close or invalidate. There's a check for closed right there, so its only if invalidate() is called twice that there'd be an issue. But that's not what's happening here, since __connection is present. Its still a bug on our part though, partially, there's an edge case where the __connection member is not the usual ConnectionFairy wrapper we use, and is the raw DBAPI connection, and that is during the initilization phase of a new connection. In your stack trace, a new connection is acquired from the DBAPI, and we're calling SELECT DATABASE() on it. That is failing. Very unusually, it is failing with an exception that passes the is_disconnect test, which means the errno is in (2006, 2013, 2014, 2045, 2055, 2048) according to the mysqlconnector dialect, and means the connection has been lost. Interestingly, that is one more code than we have in base.py. So that list of codes is suspect (the myconnpy guys provided some of this code) - the base list used by the other