commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue] r9398 - trunk/gnue-common/src/datasources/drivers/sql/mysql


From: johannes
Subject: [gnue] r9398 - trunk/gnue-common/src/datasources/drivers/sql/mysql
Date: Thu, 22 Feb 2007 08:31:32 -0600 (CST)

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)
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]