땡땡 땡땡.db.utils.Operational Error: (1071,'Specified key was too long) 해결 방법

4661 단어 Django
땡땡 땡땡.db.utils.OperationalError: (1071, ‘Specified key was too long; max key length is 767 bytes’)
다음 형식의 오류가 발생하면 모델의CharFieldmax_length가 너무 크게 지정했기 때문이다.migrations 파일을 직접 수정하여 복구할 수 있습니다.
  File "/home/yyy/venv/lib/python3.6/site-packages/MySQLdb/cursors.py", line 374, in _do_query
    db.query(q)
  File "/home/yyy/venv/lib/python3.6/site-packages/MySQLdb/connections.py", line 277, in query
    _mysql.connection.query(self, query)
django.db.utils.OperationalError: (1071, 'Specified key was too long; max key length is 767 bytes')

예를 들어 아래의 코드는 원본 파일이다
class Migration(migrations.Migration):

    dependencies = [
        ('goods', '0006_remove_goodstype_order'),
    ]

    operations = [
        migrations.AlterField(
            model_name='goodstype',
            name='name',
            field=models.CharField(max_length=256, unique=True, verbose_name='  '),
        ),
    ]

다음으로 수정:
class Migration(migrations.Migration):

    dependencies = [
        ('goods', '0006_remove_goodstype_order'),
    ]

    operations = [
        migrations.AlterField(
            model_name='goodstype',
            name='name',
            
            #      max_length 50
            field=models.CharField(max_length=50, unique=True, verbose_name='  '),
        ),
    ]

수정 후 대응하는 모델을 수정하는 것을 잊지 말고 migrate실행하면 된다

좋은 웹페이지 즐겨찾기