MySQLの文字コードがUTF8になっていなかったので死ぬほど悩んだ話

投稿日:2018-09-12

結論から言うと、タイトルの通りMySQLのインストール後にいろいろ作業してたんだけど、文字コードがUTF 8になってなかったので、原因の究明と解消にすげぇ時間がかかった。

顛末

年に何回もない作業なんだけど、展示会とかお客さんへの試用機として、自社のソフトをセットすることがあります。

その時に、今現在所属しているプロジェクトではオラクルを使っているんだけど、それ以外の製品だとOracle以外のDBを使うこともあるんです…

とは言え、インストールの手順書等は整備されているので、基本的には手順書どおりに作業進めていけばソフトのセットアップは終わる…はずなんです。

それが終わらなかった。

必要なソフトがインストールできない件

まず、ウェブ版のインストーラーを使ってのインストール手順が用意されているので、手順通りにそれを進めていく。

すると、一つ目の問題が。

手順書どおりにやっているにもかかわらず、MySQLのインストール対象になるソフトのリストが手順書どおりにならない。

これは、MySQLをアンインストールしてインストールを繰り返しても事態は好転せず。

なので、仕方なくオフライン版のインストーラーを使用することで解決。

原因と言えるかどうかわからないけど、ウェブ版のインストーラーでは、必要なソフトのダウンロードがうまくできなかった?みたい。

なので、その時の状況が許すのであれば、他のソフトについてもオフライン版のインストーラーを使った方がやはり確実だなと。

文字コードがUTF-8にならない件

これはすごい悩んだ。

実際に手順を踏んで操作してみれば、別にたいした作業してないんだけど、MySQLを触ったことがほとんどない自分からすると、そもそもの原因にたどり着くのがすごく困難だった(笑)

原因は、タイトルの通り文字コードはUTF 8になっていなかったこと。

それに気づくのに遅れていしまった理由は、今回使用したソフトウェアのインストールに失敗するところで、ログらしいものが何も無かったこと。

だって、せめてエラーログが出るとかエラーコードのダイアログでも出ていればそこを頼りに原因を探すこともできるけど、今回の場合、作成に失敗しましたとメッセージが出るだけで、原因究明に必要なものが何もなかった…

データベースの中身を見ても、とりあえずテーブル等は作成されているし、1部のデータが文字化けをしている状態だった。

まぁ、文字化けをしている時点で既に正しくはないんだけど、そこを確認すると言うチェック項目がないので今回は完全にスルーしていた。

その後は画面を使った動作確認に入るんだけど、一部必要なデータがインポートしきれていなかったりして、操作に失敗する。

そこで初めて、正しく作業ができていなかったと判明するわけで…

MySQLの文字コードの変更方法

MySQLのインストール時にデフォルト設定として文字コードが意図した通り(今回の場合はUTF-8)でインストールされるとは限らないので、インストールが終わった段階で必ず文字コードをチェックするようにしたい。

文字コードの確認方法

コマンドプロンプトで以下を入力


mysql -u root -p

パスワードを聞かれるのでもういいですくれるのインストール時に設定したパスワードを入力。

ログインしたらいいかを入力して文字コードの一覧を確認する。


show variables like '%char%';

ここで、latin1 とかcp392とか表示されていたら、その項目についてはutf8ではないので設定を変更する。

今回の場合、character_set_serverがlatin1がutf8である必要があった。

設定は以下のファイルを対象にする。

C:¥ProgramData¥MySQL¥MySQL Server 5.7¥my.ini

作業する前に、必ずファイルのバックアップを取っておく事。

インストールする場所によっては末尾の数字が違ったり、そもそもインストールするフォルダを別のところに設定したりしていればそこを参照すること。

あとは、以下を追記もしくは、修正する。



default-character-set=utf8

character-set-server=utf8

この2行を追加したら、コントロールパネル→管理ツール→サービスを開き、MySQLのサービスを再起動する。

コマンドからやってもいいけど、使う頻度が少なくてうろ覚えで結局調べるぐらいなら、サービスの再起動って覚えた方が良い。

再起動が終わったら、先の手順でMySQLにログインし直して、文字コードを表示し、utf8 になってる事を確認する。

サービスの再起動に失敗するとか、文字コードがutf8 になってない場合は、記述が間違ってるので、一旦バックアップに戻してから1行ずつやり直す。

まとめ

ここまで、慣れてしまえば時間はたいしてかからないので、インストールが終わった段階で確認するようにしたい。

社内のマニュアルとかだとインストール時のデフォルト設定で何も問題が起きないとそのままになってて、たまに今回みたいなイレギュラーな事態が発生すると誰も当てに出来ない事になったりするので要注意。

今回は、割と回数こなしてる人に聞いても、「俺がやってる時にそんなエラー出た事ねぇよ?」とか言われて、マジか(ㅇㅁㅇ;;)ってなったからね。

デフォルト設定で作業進めるようなマニュアルの場合は、ホント気をつけるべき。







-PC
-

関連記事

VMWare導入したかったけど、断念した話。

なんとなく仕事でPGをやり続けるのに気が重くなってきたので、少し気分転換にLinuxを触ってみたいっていう思い付きからやってみることにw 一応、会社のPCへクリーンインストールでLinuxを入れるとか …

TortoiseSVNを使っていて、”is already locked”が出たので対処法を探して何とかした。

先日から発生しているこのエラー。 いつものエラーね。 じゃあ、クリーンアップを・・・ え?

no image

OracleでLISTAGG関数を使ったら、世界が変わった話。

11gR2からGROUP_CONCAT(複数行をまとめて1列に)が可能に http://d.hatena.ne.jp/kkz_tech/20150311/1426048592 日本の中心付近で仕様変更 …

メモリ増設のついでに、CPUのグリス塗り直したけど、埃がヤバかった。

メモリの追加をするタイミングで、CPUのグリスを塗り直しました。 今のメインPCは5年位前のCorei5のデスクトップ。 メモリは8GB。 もう一台は、Phenom X6 のデスクトップ。 同じく、メ …

USB typeCからHDMI2系統への分配器を買ったけど、Macbook Pro では、拡張モードが使えなかった件

先日のAmazonのセールでこれも買ってました。 USB Type CからデュアルHDMI交換アタプタ 4K解像度 2HDMIポート USB 3.0高速ポート USBタイプC PD充電ポート MacB …


カテゴリー