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 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 = 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. >>> >> >> -- >> 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. > -- 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.