OperationalError в django при добавлении новой записи
Я создал базу данных mysql с помощью Cpanel. И у меня есть некоторые настройки для базы данных в settings.py :
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '*****_db',
'USER': '******',
'PASSWORD': '********',
'HOST': 'localhost',
'PORT': '3306',
'OPTIONS': { 'init_command': 'SET storage_engine=INNODB,character_set_connection=utf8,collation_connection=utf8_unicode_ci'
}
}
}
но проблема в том, что когда я пытаюсь добавить новую запись в django-admin с некоторыми арабскими символами, я получаю эту ошибку :
OperationalError at /admin/courses/arguments/add/
(1366, "Incorrect string value: '\\xD8\\xB3\\xDA\\xAF' for column `asiatrad_db`.`courses_arguments`.`name` at row 1")
В чем проблема? Нужно ли мне создать новую базу данных с charset на utf-8 ?
Кодировка "utf8" поддерживает только три байта на символ. Настоящая кодировка UTF-8, которую все используют, требует до четырех байт на символ. См. эту статью.
Поэтому используйте кодировку "utf8mb4" вместо "utf8".
settings.py
должен выглядеть следующим образом:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '*****_db',
'USER': '******',
'PASSWORD': '********',
'HOST': 'localhost',
'PORT': '3306',
'OPTIONS': { 'init_command': 'SET storage_engine=INNODB','charset': 'utf8mb4'}
}