Нито един от тези отговори не реши проблема за мен. Основната причина е:
Не можете да съхранявате 4-байтови знаци в MySQL с набор от символи utf-8.
MySQL има 3 байта ограничение за utf-8 символи (да, страхотно е, добре обобщено от разработчик на Django тук )
За да разрешите това, трябва:
- Променете вашата MySQL база данни, таблица и колони, за да използвате utf8mb4 набор от знаци (достъпно само от MySQL 5.5 нагоре)
- Посочете набора от знаци във вашия файл с настройки на Django, както следва:
settings.py
DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql',
...
'OPTIONS': {'charset': 'utf8mb4'},
}
}
Забележка:Когато пресъздавате базата си данни, може да попаднете на „Указаният ключ беше твърде дълъг ' проблем.
Най-вероятната причина е CharField
който има max_length от 255 и някакъв вид индекс върху него (например уникален). Тъй като utf8mb4 използва 33% повече пространство от utf-8, ще трябва да направите тези полета с 33% по-малки.
В този случай променете max_length от 255 на 191.
Като алтернатива можете да редактирате конфигурацията на MySQL, за да премахнете това ограничение но не и без хакерство на джанго
АКТУАЛИЗИРАНЕ: Току-що се сблъсках с този проблем отново и накрая превключих към PostgreSQL
SQL защото не успях да намаля моя VARCHAR
до 191 знака.