Сохранение пиктограмм Юникода в MySQL - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть некоторый код (на сервере django), который записывает данные json, содержащиеся в запросах POST, в mysql db.Некоторые запросы содержат определенные пиктограммы, такие как ? или ?.Они должны быть записаны в текстовое поле, но вызывают ошибку БД.

Код обработки запросов выглядит следующим образом:

            json_data = json.loads(request.body.decode('utf-8'))
            i = Event(event=json_data['event'], dt=parse(json_data['dt']),
                      object_id=json_data['object_id'], user_id=json_data['user_id'],
                      payload=json_data['payload'])
            i.save()

В настоящее время для сопоставления дБ установлено значение uft8_general_ci.

Возвращена ошибка «Неверное строковое значение».

Как лучше сохранять такие запросы в БД вместе с другими?

update : изменяя параметры сортировки на utf8mb4_general_ci, теперь я могу записывать эти символы в db напрямую (через phpmyadmin), но все еще нетудачи с запросом Python.Та же ошибкаЧто-то на стороне Джанго?

1 Ответ

0 голосов
/ 17 февраля 2019

Изменение кодировки MySQL на utf8mb4 позволит вам сериализовать пиктограммы напрямую в БД, но для того, чтобы это исправить на стороне Django, вам также потребуется обновить файл settings.py (см. Ниже):

DATABASES = {
    'default': {
        'ENGINE':'django.db.backends.mysql',
        'NAME': 'mydatabase',
        'OPTIONS': {'charset': 'utf8mb4'},
    } }

См. Также Ошибка MySQL «неверное значение строки» при сохранении строки Unicode в Django

...