MySQLでテーブルを作ったらdefault charasetがlatin1になった

データベースとテーブルを作成

前回、WindowsにMySQLをインストールする方法を記事にしました。
インストーラを使用しないでWindowsにMySQLをインストールする方法

MySQLがインストールできたので、さっそくのデータベースを作成、続いてテーブルも作成します。

show create tableコマンドを実行して、テーブルが想定通りに作成されたかを確認します。

show create table XXXXXXXX

※XXXXXXXXはテーブル名

すると、項目はちゃんとできていたのですが、最後に気になる記述を見つけました。

DEFAULT CHARASET=latin1

デフォルトの文字コードがUFT-8になっていない!?
これだとデータを入れたときにLATIN-1という文字コードで保存されてしまいそうですね。

当然、UFT-8で保持したいので、DEFAULT CHARASETを変更する方法を検索してみました。

MySQL設定ファイルを作成

意外と情報がなかったのですが、以下の2サイトが参考になりました。
参考にしたサイト
mysqlで文字コードをutf8にセットする
MySQLでcharacter_set_databaseがlatin1になってしまう問題の対応方法

内容を簡潔に書くと次のとおりです。
・my.iniという設定ファイルを作成し、DEFAULT CHARASETの情報を書いてあげる
・my.iniをmysqlフォルダの直下に格納する

さっそくmy.iniを作って、MySQLのフォルダ(僕の場合は、C:\mysql)に置いてみました。

なお、設定ファイルの内容は以下を参考にしました。
オプションファイルの設置場所


↑my.ini

[mysqld]
character-set-server=utf8

[client]
default-character-set=utf8


↑mysqlフォルダの直下に置きます。

設定ファイルを置いたら、MySQLのサービスをいったん停止して、再度起動しなおします。
そして、以下のコマンドでDEFAULT CHARASETの情報を参照します。

show variables like "chara%";

すると、概ねutf8になりましたが1箇所だけLATIN-1のままのところがありました。
どうやらデータベースのデフォルトの設定がLATIN-1のままになっているようです。

character_set_database   | latin1

よく考えると、最初にサーバのDEFAULT CHARASETがLATIN-1の状態でデータベースを作成していますので、そのままデフォルトの文字コードがLATIN-1になっているということですね。

つまり、今の設定ファイルがある状態でもう一度データベースを作り直せばおそらくUTF-8になるはずです。

データベースを再作成して確認

幸いまだデータが空っぽなので、単純にいったんデータベースをDROPしてから再度CREATEします。

データベースを作り直した上で、再度するとshow variables like “chara%”を実行します。
すると、無事UTF-8になっていました。

character_set_database   | utf8

ここでようやく再度テーブルを作成します。
show create tableで確認したところ、こちらも無事にUTF-8になっていました。

DEFAULT CHARASET=utf8

シェアする

  • このエントリーをはてなブックマークに追加

フォローする