DockerコンテナのMySQLでクライアントで日本語データ確認したら文字化けしていたので調整

Dockerの立ち上げに関しては、

  1. Dockerfileというファイルを作成する
  2. ビルドしてDockerイメージを作成する
  3. Dockerイメージからコンテナを作成する
  4. コンテナに接続してログインする

という手順を行って、

上記をやってみたあとに、

  • 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_databasecollation_serverutf8mb4_0900_ai_ciに設定されており、

これはUTF-8の4バイト対応版であるutf8mb4の文字セットを使用していることを意味します。

これは、データベースとサーバーが日本語を含む多様な文字を適切に扱える設定になっています。

しかし、

collation_connectionlatin1_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クライアントだけで対応しているので、

コンテナ自体の設定を調整したわけではないので、

コマンド実行に際して、コンテナの停止は不要

という部分は、

今回の調整方法としては、

対応としてよかったのかなと思います。

コンテナ作成時に、

同じ事象が発生する点については、

別途、再立ち上げが必要なタイミングで、

調査対応を行おうと思います。

スキルを使って、就職/転職/副業する時のサイト

プログラミングのスキルなどを、自分なりに高めた上で、

自分のスキルをアピールして就職や転職を行い、年収をあげるか、

副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。

まずはできる範囲で取り組むことで、

少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。

おすすめ書籍

広告

おすすめ記事