#2635: [patch] Updates for MySQL backend
------------------------------------------------+---------------------------
 Reporter:  Andy Dustman <[EMAIL PROTECTED]>  |       Owner:  adrian
     Type:  enhancement                         |      Status:  new   
 Priority:  normal                              |   Milestone:        
Component:  Database wrapper                    |     Version:  SVN   
 Severity:  normal                              |    Keywords:        
------------------------------------------------+---------------------------
 The patch (to be attached) is fairly heavily commented, and I intend to
 post a reference to this bug on django-users and encourage people to test
 it.
 
 = Changes =
 
  * requires MySQLdb-1.2.1 and newer.
  * eliminates `MysqlDebugWrapper` in favor of the standard
 `util.CursorDebugWrapper` and using warning filtering to raise warnings as
 exceptions.
  * sets character set to UTF8 in the the connection initiation
  * returns non-binary character fields as unicode
  * sets the [http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html
 server SQL mode]
    * ANSI makes it more SQL standards-compliant, including use of double-
 quotes
    * TRADITIONAL mode turns warnings about bad values into errors
 
 I've tested it with my own application and it seems to work fine. One
 gotcha I ran into that I actually get updates from an
 external database, and the query string for that database needs strings
 and not unicodes, and I since I was now getting
 unicode back from MySQL, I was trying to pass unicode to it, but that was
 easily fixed. Everything else in Django seems
 to work fine for me with unicode.
 
 = Concerns =
 
  * unicode values still might be breaking things; in this case,
 use_unicode=False should be set (charset implies
    use_unicode=True) as a workaround, but the plan is to make Django
 unicode-safe anyway, as I understand it.
  * warning filtering may be redundant with TRADITIONAL mode, but not
 harmful.
  * sql_mode is being set for ANSI,TRADITIONAL. The last options is new to
 MySQL-5.0,
    and this may cause errors for MySQL-4.1, or it might be ignored; I have
 only had time to test on MySQL-5.0.
    ANSI works going back to 4.1. ANSI_QUOTES is recognized by MySQL-4.0.
 If need be I can add some version
    tests.
 
 The real question is, what is the earliest version of MySQL you want to
 support? I think either 4.1 or 5.0 would be a reasonable
 cutoff, as the current stable version is 5.0, and 5.1 is in late beta, and
 4.1 adds the good character set support.
 Originally when I did this, I copied the mysql backend and called it
 mysql5, but you may not want to have multiple
 backends (though there is a precedence for that). Ultimately I think it
 needs to be left to the end-users to decide
 what the minimum version should be, since the Django developers prefer
 PostgreSQL.

-- 
Ticket URL: <http://code.djangoproject.com/ticket/2635>
Django <http://code.djangoproject.org/>
The web framework for perfectionists with deadlines.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates
-~----------~----~----~----~------~----~------~--~---

Reply via email to