MySQLにどはまり
written 2009/4/29
不慮の事態に備えるバックアップ環境の構築が満足すべきレベルに到達したので、次は、Web制作環境の復旧作業だ。要するにこのサイトsignesのApache + PHP + MySQLセッティングをMac上に構築して、公開中のさくらサーバと同等の環境をつくり、いろいろいじることができるようにしなければならない。
phpスクリプトはさくらサーバからDLしてヨシ。問題はMySQLだった・・・。
そんなに手こずると思っていなかった。
が、Leopardに入っているMySQLはバージョン5.1で、どうやらエンコードがUTF-8で統一されている。もっとも、/etc/my.cnfに「default-character-set = ujis」などと書けば、EUC-JPにもなる。ことになっている。が、どうやらこれがうまく機能していないのではないか。
さくらサーバで稼働しているデータベースからdumpして、リストア用のsqlバッチファイルをDLする(これをリストアすることによって、家のMacサーバに、さくらサーバと全く同じデータが同期される)。さくらサーバはいまのところMySQL4で、エンコードはデフォルトEUC-JPだった、と思う。従ってこのサイトのブログ記事などもすべてEUC-JPエンコードでMySQLに格納されているので、吐き出すsqlファイルもデフォルトでEUC-JPになる。
ところが、これをMacのMySQL5.1にリストアすると、どうもうまくいかないようなのだ。設定をujis(= EUC-JP)にしているはずなのに、リストアの課程でUTF-8になってしまっているのか?
で、今度はMacのMySQLをUTF-8に戻し、リストア用sqlバッチファイルをエディタでUTF-8に変換してからリストアしてみる。
これだとデータベース上はうまくいっているのだろうが、php環境はEUC-JPの設定なので、そこでうまく読み込めず、Webページが部分的に(データベースから読み込んだ文字だけ)文字化けしてしまう。
うーむ。面倒くさい・・・。
面倒くさいので、MySQL4.1をMySQLサイトからDLしてインストールしてみたが、このパッケージはLeopardに対応してないのか、MySQLデーモン自体が起動してくれない。
じゃあ今度は別の角度から試そうと思い、phpMyAdminをインストールしてみたが、設定画面が英語なのでよくわからない。・・・・
・・・と、ここまでやって疲れ切ってしまった。
それにしても、日本語(2バイト文字)ってのは、コンピュータを扱う上で、殊にプログラミングなどする上で、常々非常に厄介な問題だ。最初から規格が統一されていたならまだしも、EUC-JPだのShift-JISだのMS仕様のSJISだの、UTF-8だの、いろんな方式があるのために事態はますます紛糾する。将来的にはUTF-8になっていくのだろうが、古いデータベースなどは今回の場合のようにEUC-JPで蓄積されており、そう簡単に移行することはできない。
そもそも、日本のプログラマなどがこの「日本語問題」に頭を悩まし、消費している時間・コスト・労力は大変なものだと思う。実に様々な場面で「文字化け問題」が勃発するのである。コンピュータの世界は(インターネットもそうだが)圧倒的に、英語圏の国が有利なのである。英語でなくても、ヨーロッパ等「1バイト文字国家」は実に恵まれている。我々は日本に生まれたというだけで、えらく厄介な障壁にぶつかり、英米人の何倍も苦労しなければならないハメになっている。だから日本のソフトウェア業界は最初から過剰な重荷を背負っているのであり、英米の同種の企業と同一地平上で競うことが難しいわけだ。ということで、日本からMicrosoft、Sun、Appleのような大企業は絶対に生まれてこない。
日本にうまれて、すみません。
ふう。
次はphpスクリプトをいじっって、データベースからデータを読み込む際に文字コードを変換するようにやってみるか。当然、php処理が重くなり、サーバに負荷がかかり表示速度が落ちるのは目に見えているものの・・・。
やれやれ、今年のゴールデンウィークはのんびりできないらしい。