Author: johannes Date: 2007-02-22 08:31:31 -0600 (Thu, 22 Feb 2007) New Revision: 9398
Modified: trunk/gnue-common/src/datasources/drivers/sql/mysql/mysqldbdrv.py Log: Make use of SET NAMES optional (driven by a connection parameter) Modified: trunk/gnue-common/src/datasources/drivers/sql/mysql/mysqldbdrv.py =================================================================== --- trunk/gnue-common/src/datasources/drivers/sql/mysql/mysqldbdrv.py 2007-02-22 10:09:53 UTC (rev 9397) +++ trunk/gnue-common/src/datasources/drivers/sql/mysql/mysqldbdrv.py 2007-02-22 14:31:31 UTC (rev 9398) @@ -75,6 +75,7 @@ * port -- This is the port where the server is running (optional) * unicode -- Enables/disable unicode connection mode (optional, default=true) * encoding -- Charset used for the database connection (default="utf-8") +* version -- Server version of the database server (4 or 5, default is 5) Examples -------- @@ -92,6 +93,10 @@ 3. Other than that, the driver is fully functional with no known serious problems. + +If you get an error while connecting to the server which looks like this: +(1193, "Unknown system variable 'NAMES'") please set the connection parameter +'version=4'. """ @@ -124,23 +129,27 @@ 'passwd': connectData ['_password'] or '', 'use_unicode': True} + # MySQL 4.0* does not support SET NAMES ... + srv_version = connectData.get('version', 5) + # optional parameters for gnueName, dbName in [('host', 'host'), ('port', 'port'), ('unicode', 'use_unicode')]: if gnueName in connectData: if gnueName == 'port': - kwargs [dbName] = int (connectData [gnueName]) + kwargs [dbName] = int (connectData[gnueName]) elif gnueName == 'unicode': - kwargs [dbName] = not (connectData [gnueName] in ['False','false','0']) + kwargs [dbName] = not (connectData[gnueName] in ['False','false','0']) else: kwargs [dbName] = connectData [gnueName] - if mySQL_encTable.has_key (self._encoding): - kwargs ['init_command'] = ('SET NAMES %s' % mySQL_encTable[self._encoding]) + if int(srv_version) == 5 and mySQL_encTable.has_key (self._encoding): + kwargs ['init_command'] = ('SET NAMES %s' % + mySQL_encTable[self._encoding]) else: assert gDebug (1, "Encoding '%s' is not supported by mysql dbdriver. " - "Using default encoding." % self._encoding) + "Using default encoding." % self._encoding) return ([], kwargs) _______________________________________________ commit-gnue mailing list commit-gnue@gnu.org http://lists.gnu.org/mailman/listinfo/commit-gnue