При попытке вставить символ смайлика Юникода (?) в таблицу MYSQL происходит сбой вставки из-за ошибки;
Incorrect string value: '\\xF0\\x9F\\x98\\x8E\\xF0\\x9F...' for column 'Title' at row 1
Из того, что я рассказал об этой проблеме, это, по-видимому, вызвано набором символов по умолчанию для таблиц и, возможно, неправильным набором символов по умолчанию для столбцов. В этом посте предлагается использовать utf8mb4
, который я пробовал, но вставка все еще не работает.
Вот моя конфигурация таблицы;
CREATE TABLE `TestTable` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`InsertDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`Title` text,
`Description` text,
`Info` varchar(250) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`Id`),
KEY `xId_TestTablePK` (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=2191 DEFAULT CHARSET=utf8mb4;
Обратите внимание, что столбцы Title
и Text
не имеют явно заданного набора символов. Изначально у меня не было набора символов таблицы по умолчанию, и эти два столбца были настроены с помощью DEFAULT CHARSET=utf8mb4
. Однако, когда я изменил кодировку таблицы по умолчанию на ту же, они были удалены (предположительно потому, что столбцы наследуют тип от таблицы?)
Может кто-нибудь помочь мне понять, как я могу хранить эти значения Unicode в моей таблице?
Стоит отметить, что я в Windows и пытаюсь выполнить эту вставку в MYSQL Workbench. Я также пытался использовать C # для вставки в базу данных, указав набор символов с CHARSET=utf8mb4
, однако это вернуло ту же ошибку.
EDIT
Чтобы попытаться вставить эти данные, я выполняю следующее:
INSERT INTO TestTable (Title) SELECT '??';
Редактировать
Не уверен, что это актуально или нет, но моя база данных также настроена с тем же набором символов по умолчанию;
CREATE DATABASE `TestDB` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;