Opened 10 years ago

Last modified 10 years ago

#24410 closed Bug

MySQL manually created indexes aren't recognized — at Initial Version

Reported by: László Károlyi Owned by: nobody
Component: Migrations Version: 1.7
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Hey,

Using Django 1.7's migrations with MySQL, when I need to create a custom index on a column (Specified key was too long; max key length is 767 bytes, thus the column needs a prefix length), it's not recognized, not deleted when migrating backwards and the erroneous index creation SQL is recreated in the next migration, causing the migration to fail, or creating another index which emits a MySQL warning (_mysql_exceptions.Warning: Duplicate index 'cdn_image_cdn_path_2654d3de68657258_uniq' defined on the table 'xxx.cdn_image'. This is deprecated and will be disallowed in a future release.), thus causing the migration to fail.

Here's the model:

class Image(models.Model):

    """Model for the saved images"""

    comment = models.ManyToManyField(
        'base.Comment', null=None, default=1, verbose_name=_('Found in comment'))
    orig_src = models.URLField(
        verbose_name=_('Original source'), max_length=512, db_index=True)
    mime_type = models.CharField(verbose_name=_('Mime type'), max_length=100)
    cdn_path = models.CharField(
        verbose_name=_('Path in CDN'), max_length=255, unique=True)
    file_hash = models.CharField(
        verbose_name=_('File hash'), max_length=200, unique=True)

    def __str__(self):
        return self.cdn_path

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top