#18392: Make MySQL backend default to utf8mb4 encoding
-------------------------------------+-------------------------------------
     Reporter:  EmilStenstrom        |                    Owner:  nobody
         Type:  New feature          |                   Status:  new
    Component:  Database layer       |                  Version:  1.4
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:  utf8mb4 mysql        |             Triage Stage:  Accepted
    Has patch:  1                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  1
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Comment (by Kelly Campbell):

 As a workaround, I came up with this monkey patch that limits the index
 size. We put this in our migrations/__init__.py:

 {{{
 from django.db.models.fields import CharField

 def _create_index_sql(self, model, fields, suffix="", sql=None):
     """
     Return the SQL statement to create the index for one or several
 fields.
     `sql` can be specified if the syntax differs from the standard (GIS
     indexes, ...).
     """
     tablespace_sql = self._get_index_tablespace_sql(model, fields)
     idx_columns = []
     for field in fields:
         c = field.column
         if isinstance(field, CharField):
             if field.max_length > 255:
                 idx_columns.append(self.quote_name(c) + '(255)')
             else:
                 idx_columns.append(self.quote_name(c))
         else:
             idx_columns.append(self.quote_name(c))
     columns = [field.column for field in fields]
     sql_create_index = sql or self.sql_create_index
     return sql_create_index % {
         "table": self.quote_name(model._meta.db_table),
         "name": self.quote_name(self._create_index_name(model, columns,
 suffix=suffix)),
         "using": "",
         "columns": ", ".join(column for column in idx_columns),
         "extra": tablespace_sql,
     }


 from django.db.backends.mysql.schema import DatabaseSchemaEditor
 DatabaseSchemaEditor._create_index_sql = _create_index_sql

 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/18392#comment:45>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/071.47db1f449d57502b1ed391d02bde890d%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to