@pvgdrk

Почему при попытке сохранить значение в django admin получаем Incorrect string value?

Да, это много раз обсуждалось, и вроде есть решения которые помогали(мне тоже помогали раньше, сейчас почему-то не помогают - stackoverflow.com/questions/2108824/mysql-incorrec...
Но этот вопрос немного о другом. Причина этой ошибки в том что байтов там где-то в mysql больше чем надо получается и потому не сохраняется. Но если дело в mysql почему тогда через менеджер баз данных pycharm у меня та же самая строка прекрасно сохраняется, а через административный интерфейс django ошибка получается? Может где-то что-то не так в django?

Не знаю какую информацию из настроек можно показать, эти три последние строки по-моему вообще бесполезны - что есть, что нет:
DATABASES = {
    'default': {
        ...
        'OPTIONS': {
            'init_command': 'SET storage_engine=INNODB, '
                            'character_set_connection = utf8, '
                            'collation_connection = utf8_unicode_ci, '
                            'collation_database = utf8_unicode_ci, collation_server = utf8_unicode_ci'
        },
    }
}
  • Вопрос задан
  • 2836 просмотров
Решения вопроса 1
alternativshik
@alternativshik
вам нужна не utf8, а utf8mb4, если у вас там реально проблема в том, что вы написали (например, для сохранения emoji). Лечится конвертированием базы в utf8mb4 (mysql >= v5.5), + в сеттингсах
import codecs

#Хак для работы с "utf8mb4"
codecs.register(lambda name: codecs.lookup('utf8') if name == 'utf8mb4' else None)


и в настройках базы:
'OPTIONS': {
            'charset': 'utf8mb4',
        }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы