Fixed #2188 -- Raise an error when using long CharFields in combination with

older MySQL versions. Thanks, Fraser Nevett <mail@nevett.org> .


git-svn-id: http://code.djangoproject.com/svn/django/trunk@3855 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2006-09-26 10:46:34 +00:00
parent 5371ee1743
commit 4e76727fec
3 changed files with 21 additions and 1 deletions

View file

@ -13,6 +13,7 @@ except ImportError, e:
from MySQLdb.converters import conversions
from MySQLdb.constants import FIELD_TYPE
import types
import re
DatabaseError = Database.DatabaseError
@ -24,6 +25,8 @@ django_conversions.update({
FIELD_TYPE.TIME: util.typecast_time,
})
server_version_re = re.compile('[.-]')
# This is an extra debug layer over MySQL queries, to display warnings.
# It's only used when DEBUG=True.
class MysqlDebugWrapper:
@ -61,6 +64,7 @@ class DatabaseWrapper(local):
def __init__(self):
self.connection = None
self.queries = []
self.server_version = None
def _valid_connection(self):
if self.connection is not None:
@ -110,6 +114,14 @@ class DatabaseWrapper(local):
self.connection.close()
self.connection = None
def get_server_version(self):
if not self.server_version:
if not self._valid_connection():
self.cursor()
version = server_version_re.split(self.connection.get_server_info())
self.server_version = tuple([int(x) for x in version[:3]]) + tuple(version[3:])
return self.server_version
supports_constraints = True
def quote_name(name):