MySQL и MariaDB LinuxWindowsMySQL Server

MySQL: MySQL не сохраняет строки с эмодзи из-за неверной кодировки

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

MySQL принимает полноценные эмодзи только при корректной передаче Unicode и хранении в совместимом наборе символов, как правило utf8mb4. Кодировка utf8mb3 и неправильная кодировка соединения могут приводить к Incorrect string value.

В этой статье
  1. Как проявляется проблема и где искать причину
  2. Пошаговая диагностика и устранение
  3. Как проверить результат
  4. Если исправление не помогло

#Как проявляется проблема и где искать причину

MySQL принимает полноценные эмодзи только при корректной передаче Unicode и хранении в совместимом наборе символов, как правило utf8mb4. Кодировка utf8mb3 и неправильная кодировка соединения могут приводить к Incorrect string value.

Возможная причинаКак узнатьЧто делать
Столбец в utf8mb3Столбец не поддерживает четырёхбайтовые символыКириллица сохраняется, эмодзи даёт ошибкуПодготовить изменение кодировки конкретного столбца
Клиент передаёт неверные байтыОшибка есть только у части приложенийВ mysql CLI utf8mb4 работает, в API — нетНастроить charset на подключении

#Пошаговая диагностика и устранение

  1. 1. Зафиксируйте сообщение MySQLВ приложении найдите точный текст ошибки и код, например Incorrect string value. Зафиксируйте имя поля без копирования пользовательского текста в открытый журнал. Проверьте, что ошибка возникает именно с символом вне базовой многоязычной плоскости.
  1. 2. Посмотрите кодировку текущей сессииВ том соединении, где возникает проблема, прочитайте переменные клиента, соединения и результата. Если любой участок использует utf8mb3 или иной набор, исправление таблицы без клиента может не помочь.
  2. Дополнительная команда по теме
    SQLКоманда
    mysql-клиент; для приложения желательно аналогично проверить параметры его живого соединения.
    SHOW VARIABLES LIKE 'character_set_%';
  1. 3. Проверьте проблемный столбецВыполните SHOW FULL COLUMNS и найдите Collation нужного текстового столбца. Кодировка обычно видна по имени сортировки: utf8mb4_... указывает на четырёхбайтовый UTF-8.
    SQLКоманда
    Замените таблицу на реальную, чтение.
    SHOW FULL COLUMNS FROM appdb.messages;
  1. 4. Проверьте настройки базыВ SQL-клиенте прочитайте CREATE DATABASE и сравните кодировку схемы и столбца. Кодировка по умолчанию схемы не преобразует автоматически уже существующие поля.
  2. Показывает параметры по умолчанию только для названной базы
    SQLКоманда
    Показывает параметры по умолчанию только для названной базы.
    SHOW CREATE DATABASE appdb;
  1. 5. Проверьте правильность драйвераДля PHP mysqli/PDO, Python mysql-connector или другого драйвера используйте его штатный параметр charset=utf8mb4 при открытии соединения. SET NAMES utf8mb4 применяется только к текущей сессии и годится для диагностического теста.
  2. В mysql-клиенте, только текущий сеанс
    SQLКоманда
    В mysql-клиенте, только текущий сеанс.
    SET NAMES utf8mb4;
  1. 6. Испытайте запись в отдельной таблицеСоздайте тестовую таблицу/схему с utf8mb4 после разрешения DBA. Вставьте контрольную строку с кириллицей и одним эмодзи из того же приложения, затем прочитайте её обратно и сравните байты. Если тест проходит, причина в структуре исходного поля.
  1. 7. Спланируйте миграцию столбцаСнимите резервную копию и изучите размер таблицы, состав индексов и зависимости. Только после успешного испытания ALTER TABLE на копии переводите конкретный столбец на utf8mb4 в согласованное окно; удаление индексов ради обхода ошибочного ограничения не допускается.
  1. 8. Проверьте всю цепочкуПосле исправления на тесте выполните запись через веб-приложение, чтение через MySQL и повторное отображение в браузере. Успех — одинаковый текст на всех этапах без вопросительных знаков и ошибки сервера.

#Как проверить результат

В тестовой и проверенной рабочей цепочке эмодзи сохраняются целиком, кириллица и сортировка не повреждены.

#Если исправление не помогло

Если символы уже превратились в «?», простая смена кодировки их не восстановит — потребуется корректный оригинал или резервная копия.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.