インテルへの道3

2006年12月15日 | PHP+DB
まずは、データベースのデータを移動。phpMyAdminで書き出してインテルMacのMySQLにインポート。読み込みファイルの文字セットにEUCがないので、utf8に変換してから読み込ませるとすんなり行ったかな。
続いて移したデータを使うスクリプトを起動してみる・・・噂通り文字化け。ページそのものが化けてるんじゃなくて差し込まれたデータのところだけが「???」と化けてます。

まぁ、ここからあれこれ格闘したわけですが、結論から言いますと、データベースに接続した後、set names ujisというクエリーを実行させるならそれだけでOKのようです。

$con = mysql_connect($hostname, $user_id, $password);
mysql_select_db($dbname);

$sql = "set names ujis";
$rs = mysql_query($sql);

ってな感じ?

結論はそうであっても、これを解決策とするならすべてのスクリプトに手を入れなければならないわけでして・・・そんなことはできる限りしたくないわけです。

で、これをサーバの方で必ずやってくれるような設定があるとのこと。それが、my.cnfの[mysqld]のところに

init-connect='SET NAMES ujis'

と書くというやつです。ちなみに、my.cnfなんてファイルはいくら探しても見つかりません。/library/share/mysqlにmy-small.cnfとかmy-medium.cnfとかmy-large.cnfとかありますんで、自分の環境にあったものを選んでmy.cnfとリネームした後、/db/mysqlに置けばいいようです。MAMPなら書き換えも移動も面倒なことがないんで嬉しいよね。

さて、my.cnfを置いてみる・・・変化なし。またまた調査の旅へ・・・すると、super権限のあるユーザーの場合はinit-connectが効かないんで、mysqldの起動オプションで指定しないとダメなんて記述を見つける。/bin/startMysql.shの起動オプションに

--init-connect='SET NAMES ujis'

を足してみる・・・これでも変わらず。

人がうまくいったというページの通りやってうまく行かないと凹むよね・・・いろいろ悩んだあげくsuperユーザーであること自体がいかんのかいなと思い、ほかのユーザーを作ってそのユーザーで接続してみる・・・出来た!文字化けしないよ~!

結局必要だったのは、my.cnfにinit-connect='SET NAMES ujis'を書き入れて、アクセス用のユーザーを作っただけ。これだけで今のところは問題ないように見えます。default-character-setの設定とか、skip-character-set-client-handshakeがどうとかいう話もあったけど、今のところなくても問題ないようです。まぁあとは、問題があればその時また考えることにしよう。その方が、今訳もわからず設定しておくより、どの設定が何に対処したものかがより実感を持ってわかるから。

と言うわけで、PHPおよびMySQLの移行はひとまず完了ということになりました。さて、次回は・・・

最新の画像もっと見る

コメントを投稿