Задача решается очень просто. Надо на всю базу, включая поля таблиц использовать сопоставление utf8mb4.
У тебя проблема скорее всего в том, что ты подаешь в MySQL символы, которые требуют для хранения 4 байта, а это - проблема кодировки.
Исправишь - все заработает.
Senior DeveloperМастер (2208)
3 года назад
В настройках MySQL сервера должно быть:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
Проверь еще в какой кодировке происходит соединение с MYSQL, когда выполняется запрос: SET NAMES 'utf8mb4';
Потом переведи collation самой базы данных в кодировку, которая поддерживает расширенные символы UTF8, т. е. мультибайтную кодировку mb4.
CP2151 работать НЕ будет, как и любые другие кодировки, которые не поддерживают символы, которые должны храниться с использованием не менее 4байт, например, смайлики эмоджи.
Senior DeveloperМастер (2208)
3 года назад
Или, если делать более быстро, попробуй хотя бы для этого поля (из-за которого происходит ошибка - ведь в него же вставляются данные) сменить кодировку только хотя бы у него:
ALTER TABLE `table`
MODIFY `description` VARCHAR(xxx) CHARACTER SET utf8mb4;
Или для всей данной таблицы:
ALTER TABLE `table` CONVERT TO CHARACTER SET utf8mb4;
Кодировка utf8_general_ci (вся бд, включая таблицы и поля, запрос в такой же кодировке, пробовал и другие кодировки)
Как починить? Уже час сижу, головой об стенку бьюсь, не пойму как сделать