更新 以下の答えに:
質問されたとき、MySQLの「UTF8」はutf8mb3
を意味していました 。それまでの間、utf8mb4
追加されましたが、私の知る限り、MySQL「UTF8」はutf8mb4
を意味するように切り替えられませんでした 。
つまり、「utf8mb4」という意味の場合は、具体的に「utf8mb4」を入力する必要があります(utf8mb4
を使用する必要があります)。 )
「UTF8」と言っても違いがあることを明確にするために、答えを編集するだけでなく、ここに残しておきます
オリジナル
データベース内のデータを台無しにしているので、Richiesの答えはお勧めしません。問題を修正することはできませんが、問題を「非表示」にして、クラップされたデータで重要なデータベース操作を実行できないようにします。
このエラーが発生した場合は、送信しているデータがUTF-8でエンコードされていないか、接続がUTF-8ではありません。まず、データソース(ファイルなど)が本当に UTF-8です。
次に、データベース接続を確認します。接続後にこれを行う必要があります:
SET NAMES 'utf8mb4';
SET CHARACTER SET utf8mb4;
次に、データが格納されているテーブルにutf8mb4文字セットが設定されていることを確認します。
SELECT
`tables`.`TABLE_NAME`,
`collations`.`character_set_name`
FROM
`information_schema`.`TABLES` AS `tables`,
`information_schema`.`COLLATION_CHARACTER_SET_APPLICABILITY` AS `collations`
WHERE
`tables`.`table_schema` = DATABASE()
AND `collations`.`collation_name` = `tables`.`table_collation`
;
最後に、データベース設定を確認します:
mysql> show variables like '%colla%';
mysql> show variables like '%charac%';
ソース、トランスポート、および宛先がutf8mb4の場合、問題は解消されています;)