環境
- MySQL 8.0.31
- Docker Desktop 4.4.4
- MySQL Workbench 8.0.30
背景
勉強目的でDockerにDBのコンテナを作り、いろいろ操作する中で日本語を含むレコードを挿入しようとしたら、エラーが出て挿入できなかった。エラーの解決に苦労したので、ナレッジとして残しておきたいと思い、記事を記載することにした。
テーブルの定義
dummyテーブル
Column | Type |
---|---|
id | int |
dummycol | verchar(45) |
実行したSQL
INSERT INTO `dummy` (`id`, `dummycol`) VALUES ('2', 'あ');
エラー内容
ERROR 1366: 1366: Incorrect string value: '\xE3\x81\x82' for column 'dummycol' at row 1
「あ」という文字列ではなく「\xE3\x81\x82」という文字列で表示されているので、文字コード関連で怒られてるっぽい。
原因
MySQL Workbenchで見ると、Character Setがlatin1になっていたのが原因だった。
解決法
Character Setをutfmb4に変えてあげると、無事SQLが通るようになった。
試してないけど、utf8でもいけるはず。