Author: russellm Date: 2010-04-28 07:08:30 -0500 (Wed, 28 Apr 2010) New Revision: 13040
Modified: django/trunk/django/db/backends/creation.py django/trunk/django/db/backends/mysql/base.py Log: Fixed #12977 -- Ensure that indexes don't exceed character limits on MySQL. Thanks to carljm for the original report, and hgee...@osso.nl for the patch. Modified: django/trunk/django/db/backends/creation.py =================================================================== --- django/trunk/django/db/backends/creation.py 2010-04-28 11:27:38 UTC (rev 13039) +++ django/trunk/django/db/backends/creation.py 2010-04-28 12:08:30 UTC (rev 13040) @@ -260,6 +260,8 @@ 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 @@ 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)) + Modified: django/trunk/django/db/backends/mysql/base.py =================================================================== --- django/trunk/django/db/backends/mysql/base.py 2010-04-28 11:27:38 UTC (rev 13039) +++ django/trunk/django/db/backends/mysql/base.py 2010-04-28 12:08:30 UTC (rev 13040) @@ -227,6 +227,9 @@ second = '%s-12-31 23:59:59.99' return [first % value, second % value] + def max_name_length(self): + return 64 + class DatabaseWrapper(BaseDatabaseWrapper): operators = { -- You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-upda...@googlegroups.com. To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-updates?hl=en.