どうも、うちの環境だと、日本語のタグがダブって表示されてしまう。
初めはどうでもいいや と思っていたが、気になってきたので解決することにした。
インターネットで調べてみると、どうも文字コードがおかしいようだ。
実際、サーバで調べたところ、MTが utf8(UTF-8)なのに対して、MySQLが ujis(EUC-JP)になっていた。
こりゃ、いかん!直さねば!
っと思って、直してみた。
とりあえず、utf8に統一させることにする。
まずは、MySQLを設定してみる。
設定ファイルは、どうも /etc/my.cnf か /etc/mysql/my.cnf らしい。
しかし、私のサーバにはその設定ファイルが存在しなかった!!
どうも、作り忘れていたらしい....
とりあえず、それらしいところから、設定ファイルのデフォルトをコピーした。
# cp /usr/share/doc/MySQL-server-バージョン/my-small.cnf /etc/my.cnf
文字コードの設定を追加してみる。
[client]
default-character-set = utf8[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
これで、一応文字コードは変更できたはず。MySQLを再起動する。
# /etc/init.d/mysql restart
しかし、これは次回新しく作るデータベースのみにしか適応されない。つまり、今までのはそのままとして扱われる。
そこで、これから既存データベースをの文字コードを変更する。(変換はしない)
流れは、ダンプの作成 -> ダンプ書き換え -> 書き戻し となる。
まずは、ダンプを作ることにする。
$ mysqldump -u ユーザ名 -p データベース名 > ダンプファイル名
Enter password: パスワード入力
次に、ダンプを書き換える。
CREATE TABLEのところの末尾にある DEFAULT CHARSET=ujis を DEFAULT CHARSET=utf8 COLLATE utf8_general_ci に書き換える。複数あるので、viエディタで、以下のコマンドで処理した。
$ vi ダンプファイル名
:%s/DEFAULT CHARSET=ujis/DEFAULT CHARSET=utf8 COLLATE utf8_general_ci/g
これを元のデータベースに書き戻す。上書きされるので注意してください。また、MT上でもバックアップをとってください。
$ mysql u ユーザ名 -p データベース名 < ダンプファイル名
あとは、MT上でタグを選んで、名前を変更で統合していけばOK。しかし、私の場合それができなかったので、タグをつけ直しました。
---
このダンプ使ったら、MySQLのデータベースを定期的にバックアップとれるんじゃね?と書いた後に気がついたw
コメントする