DockerコンテナのMySQLでクライアントで日本語データ確認したら文字化けしていたので調整
Dockerの立ち上げに関しては、
- Dockerfileというファイルを作成する
- ビルドしてDockerイメージを作成する
- Dockerイメージからコンテナを作成する
- コンテナに接続してログインする
という手順を行って、
上記をやってみたあとに、
- Dockerのイメージの確認
- Dockerのコンテナの確認
- Dockerのコンテナの停止と削除
などを行っていました。
この辺りは、
コマンドで実行したことがあるので、
その辺りは、
【簡易サンプル】Dockerの基本的な手順とコマンドサンプル
こちらを参考にしてください。
今回は、
すでにMySQL用のコンテナを立ち上げており、
このMySQLへの各種アクセスや処理は問題ないのだが、
このコンテナ内のMySQLクライアントで、
接続してからデータを見ると文字化けする事象が発生。
その際に、試した時の対応を、
自分の備忘録として、
忘れないうちにメモを残しておきます。
関連内容
Dockerコンテナのネットワークについて、
確認するコマンドなどは、
以下の記事にメモしていますので参考にしてください。
事象メモ
実際のMySQLクライアントで、
データを確認を
select * from table_name
のように確認すると、
実際の値の表示が、
このように、
うまく文字列(日本語)が表示されなかった。
対応方法のメモ
今回の対応については、
MySQLコマンドで実行できました。
調整は、
- 現在の文字コードの状況を確認
- 文字コードを調整
という流れで、
まずは、確認から。
確認コマンド
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
確認結果
> SHOW VARIABLES LIKE 'collation%';
+----------------------+--------------------+
| Variable_name | Value |
+----------------------+--------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | utf8mb4_0900_ai_ci |
| collation_server | utf8mb4_0900_ai_ci |
+----------------------+--------------------+
確かに、
collation_database
とcollation_server
がutf8mb4_0900_ai_ci
に設定されており、
これはUTF-8の4バイト対応版であるutf8mb4
の文字セットを使用していることを意味します。
これは、データベースとサーバーが日本語を含む多様な文字を適切に扱える設定になっています。
しかし、
collation_connection
がlatin1_swedish_ci
になっているため、
クライアント(アプリケーション)と
MySQLサーバー間の接続で使用される文字セットがLatin1(西欧言語用)に設定されています。
これが原因で、日本語が正しく扱われずに文字化けしてしまう可能性があります。
調整としては、
utf8mb4_0900_ai_ci
に変更します。
調整コマンド
SET NAMES utf8mb4 COLLATE utf8mb4_0900_ai_ci;
こちらを実行して、
再度、
SHOW VARIABLES LIKE 'collation%';
で確認すると、
> SHOW VARIABLES LIKE 'collation%';
+----------------------+--------------------+
| Variable_name | Value |
+----------------------+--------------------+
| collation_connection | utf8mb4_0900_ai_ci |
| collation_database | utf8mb4_0900_ai_ci |
| collation_server | utf8mb4_0900_ai_ci |
+----------------------+--------------------+
となりうまく対応できました。
今回のMySQLクライアントだけで対応しているので、
コンテナ自体の設定を調整したわけではないので、
コマンド実行に際して、コンテナの停止は不要
という部分は、
今回の調整方法としては、
対応としてよかったのかなと思います。
コンテナ作成時に、
同じ事象が発生する点については、
別途、再立ち上げが必要なタイミングで、
調査対応を行おうと思います。
スキルを使って、就職/転職/副業する時のサイト
プログラミングのスキルなどを、自分なりに高めた上で、
自分のスキルをアピールして就職や転職を行い、年収をあげるか、
副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。
まずはできる範囲で取り組むことで、
少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。