Home > WWW > MySQLを5から5(へ?

MySQLを5から5(へ?

タイトルについては正直てきと~ですので気にしないように(苦笑).

先日,MySQLを4から5へ移行し(2009年3月14日(土) - MySQLを4から5へ),しかもその後MTが4.25になったわけ(2009年3月20日(金) - MT 4.25が出てました)ですが,このときにちょっとした落とし穴がありました.実はMTのバージョンアップをした時にデータベースの更新もありまして,昨日ふとデータベースの方を覗いてみたところ,新しいテーブルやクエリの文字エンコードがEUC-JPになってることに気が付きました.

これはMySQL5のデータベースを設定したときに,MySQL4からのバックアップデータをそのまま入れてしまったことに起因するのですが,MySQL4のデフォルトの文字エンコードはEUC-JP(ujis),かたやMySQL5のデフォルトの文字エンコードはUTF-8なのです.ところが今回MySQL4のバックアップから文字エンコードの操作をしないでリストアをしてしまったことから,MySQL5なのに各テーブルの文字エンコードがEUC-JPになってしまっていた...ということなのですね(^^;.で,テーブルの構造内での文字エンコード(照合順序)を直せば良いと思っていたんですが,MTのアップグレードに応じてデータベースも更新されたり追加されたりするので,更新のたびごとデータベースをチェックしなければならないということになってしまいます.


んで,MySQL5にデータベースを移行し,テーブル内の構造をUTF-8に直した後にエクスポート(バックアップ)を試してみたんですが,MySQL5以降だと各テーブルの文字エンコード(デフォルト)がちゃんと書かれてました(最初のmt_assetテーブルの構造設定の終端部分を表示).まぁ,phpMyAdminでテーブル内構造を先に直していたので,テーブルごとの文字エンコードが出てきたというのもあるんですが(^^;

  KEY `mt_asset_file_ext` (`asset_file_ext`)
) ENGINE=MyISAM  DEFAULT CHARSET=ujis AUTO_INCREMENT=402 ;

この部分をutf8に一括置換してインポート(リストア)すれば,データベースの各テーブルの文字エンコード(照合順序)がUTF-8に変わる...ということになります.多分MySQL4から5に変えるときも,(MySQL4でのエクスポートの時はTYPE=MyISAM AUTO_INCREMENT=398 ;という風に表示されます)この部分を追記しておけば問題ないのではないかと思います.

んで,インポート(リストア)についてもわざわざ分割なんてせずとも,sqlファイルをbz2圧縮するとかなり小さくなります(14MBのファイルが1.6MB程になります)ので,bz2圧縮したファイルをインポートしてあげれば1発で完了します.4から5に変更したときの苦労は一体何だったんだ?というぐらいに(^^;

ちなみにbzip2圧縮ですけど,ライブラリだとTAR32.dllがあれば問題なく圧縮・解答が出来ます,ソフトウェアだとLHMeltが一番良いんでしょうね.dllファイルと連携して動作するので,bzip2以外のアーカイブも作成出来ちゃいますし.

Comments:0

コメントする

Home > WWW > MySQLを5から5(へ?

Search

Tag Cloud

CC Licence

Creative Commons License

このブログはクリエイティブ・コモンズでライセンスされています。

Feeds

Links

Return to page top