django.db.utils.OperationalError: (1071, 'Specified key was too long; max key length is 767 bytes')
database, django, mariadb, migrate, python
Solution
solution is
ALTER DATABASE `databasename` CHARACTER SET utf8;
Problem
My model: ``` class Course(models.Model): language = models.ForeignKey(Language) name = models.CharField(max_length=50, unique=True, default='course') title = models.CharField(max_length=1024, default='no title') foreign_title = models.CharField(max_length=1024, default='no title', blank=True) header = models.CharField(max_length=1024, default='', blank=True) description = models.TextField(null=True, blank=True) def __str__(self): return self.title def __unicode__(self): return u'%s' % self.title ``` I am add "unique_together": ``` class Course(models.Model): language = models.ForeignKey(Language) name = models.CharField(max_length=50, unique=True, default='course') title = models.CharField(max_length=1024, default='no title') foreign_title = models.CharField(max_length=1024, default='no title', blank=True) header = models.CharField(max_length=1024, default='', blank=True) description = models.TextField(null=True, blank=True) class Meta: unique_together = ['language', 'name', 'title'] def __str__(self): return self.title def __unicode__(self): return u'%s' % self.title ``` In-migration time getting the error: ``` django.db.utils.OperationalError: (1071, 'Specified key was too long; max key length is 767 bytes') ``` My DB is: mysql Ver 15.1 Distrib 10.0.17-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 I tried to increase the length of the index mysql: ``` MariaDB [(none)]> set global innodb_file_format = BARRACUDA; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> set global innodb_large_prefix = ON; Query OK, 0 rows affected (0.00 sec) ``` But this is still not enough: ``` django.db.utils.OperationalError: (1071, 'Specified key was too long; max key length is 3072 bytes') ``` The problem index length. How to specify the length limit Django index?