app/django/db/backends/mysql/validation.py
author Sverre Rabbelier <srabbelier@gmail.com>
Tue, 03 Mar 2009 23:27:39 +0000
changeset 1614 797f5ae462e7
parent 323 ff1a9aa48cfd
permissions -rw-r--r--
Convert getForFields back to the Query API and add tests This is possible now that it supports the 'IN' operator. Added tests to make sure there are no regressions. Patch by: Sverre Rabbelier

from django.db.backends import BaseDatabaseValidation

class DatabaseValidation(BaseDatabaseValidation):
    def validate_field(self, errors, opts, f):
        "Prior to MySQL 5.0.3, character fields could not exceed 255 characters"
        from django.db import models
        from django.db import connection
        db_version = connection.get_server_version()
        if db_version < (5, 0, 3) and isinstance(f, (models.CharField, models.CommaSeparatedIntegerField, models.SlugField)) and f.max_length > 255:
            errors.add(opts,
                '"%s": %s cannot have a "max_length" greater than 255 when you are using a version of MySQL prior to 5.0.3 (you are using %s).' % 
                (f.name, f.__class__.__name__, '.'.join([str(n) for n in db_version[:3]])))