Commit 9d8492c1 authored by Russell Keith-Magee's avatar Russell Keith-Magee
Browse files

Fixed #12977 -- Ensure that indexes don't exceed character limits on MySQL....

Fixed #12977 -- Ensure that indexes don't exceed character limits on MySQL. Thanks to carljm for the original report, and hgeerts@osso.nl for the patch.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@13040 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 4e0aa65d
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -260,6 +260,8 @@ class BaseDatabaseCreation(object):

    def sql_indexes_for_field(self, model, f, style):
        "Return the CREATE INDEX SQL statements for a single model field"
        from django.db.backends.util import truncate_name

        if f.db_index and not f.unique:
            qn = self.connection.ops.quote_name
            tablespace = f.db_tablespace or model._meta.db_tablespace
@@ -271,8 +273,9 @@ class BaseDatabaseCreation(object):
                    tablespace_sql = ''
            else:
                tablespace_sql = ''
            i_name = '%s_%s' % (model._meta.db_table, self._digest(f.column))
            output = [style.SQL_KEYWORD('CREATE INDEX') + ' ' +
                style.SQL_TABLE(qn('%s_%s' % (model._meta.db_table, f.column))) + ' ' +
                style.SQL_TABLE(qn(truncate_name(i_name, self.connection.ops.max_name_length()))) + ' ' +
                style.SQL_KEYWORD('ON') + ' ' +
                style.SQL_TABLE(qn(model._meta.db_table)) + ' ' +
                "(%s)" % style.SQL_FIELD(qn(f.column)) +
+3 −0
Original line number Diff line number Diff line
@@ -227,6 +227,9 @@ class DatabaseOperations(BaseDatabaseOperations):
        second = '%s-12-31 23:59:59.99'
        return [first % value, second % value]

    def max_name_length(self):
        return 64

class DatabaseWrapper(BaseDatabaseWrapper):

    operators = {