Movable Type 日本語タグの重複

| コメント(0) | トラックバック(0) |

どうも、うちの環境だと、日本語のタグがダブって表示されてしまう。

初めはどうでもいいや と思っていたが、気になってきたので解決することにした。

インターネットで調べてみると、どうも文字コードがおかしいようだ。
実際、サーバで調べたところ、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

トラックバック(0)

トラックバックURL: https://www.letstryit.net/mt/mt-tb.cgi/11

「Movable Type 5 正式版」に移行したのち、ブログ記事の「タグ」で、ちょっとした不具合が起こっていました。ブログ記事を投稿した際に、新規作成した記事のタグと同じタグを含む記事を既に記入している場合に、本来ならばそれらが「同じタグを持つ記事」として解釈されるはずなのですが、今回「全く別物」として扱われていました。先日、その問題が解決したので、こちらに原因と対処法を残しておきます。 続きを読む

コメントする

アーカイブ

カウンタ

Total
Today
Yesterday

IPv6 Ready

Powered by Movable Type 7.0