日付が変わってしまったのでエントリも日付を改めまして。というか今日はPEAR+mysqlの動作確認が限界だな。
C:\php>mysql -uroot -p ... mysql> create database ethna; mysql> grant all on ethna.* to ethna@localhost identified by 'ethna';
つづいて PEAR の DB を入れる。
C:\php>pear install DB
さらに次のようなスクリプトをでっちあげ、 C:\Documents and Settings\ichii386\My Documents\htdocs\mysql.php とかに保存する。
<?php require_once 'DB.php'; $conn = &DB::connect('mysql://ethna:ethna@localhost/ethna'); if (PEAR::isError($conn)) { echo $conn->getMessage(); exit; } $sql =<<<EOS CREATE TABLE IF NOT EXISTS message ( id INT NOT NULL AUTO_INCREMENT, msg VARCHAR(255) NOT NULL DEFAULT '', PRIMARY KEY id (id), KEY msg (msg) ) EOS; $res = &$conn->query($sql); if (PEAR::isError($res)) { echo $res->getMessage(); exit; } $sql =<<<EOS INSERT INTO message (msg) VALUES ('testtest') EOS; $res = &$conn->query($sql); if (PEAR::isError($res)) { echo $res->getMessage(); exit; } $sql =<<<EOS SELECT id, msg FROM message EOS; $res = &$conn->query($sql); if (PEAR::isError($res)) { echo $res->getMessage(); exit; } header("Content-type: text/plain;\n"); while (($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) !== null) { echo 'id = '.$row['id'].', msg = '.$row['msg']."\n"; } $conn->disconnect(); exit; ?>
うまくいくかとドキドキするわけですが、"DB.php"が見つかんない、みたいなエラー。さっきinclude_pathを自動で修正してくれたままapacheを再起動してなかった。でやり直すと今度は
DB Error: connect failed
ですって。はあ??
仕方ないので
$res = mysql_connect('localhost', 'ethna', 'ethna'); echo mysql_error($res);
してみると、
Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client in ...
ですか...。このあいだ作ったtest.phpでphpinfo()を見てみると、ありましたよ。libmysqlclientのバージョンが古すぎ。
Client API version 3.23.49
うーん、oldpassword使うのはあんま本質的な解じゃないよな。windowsだとどっかからdll落として突っ込めば済むんでしょうか。とりあえずググってみると、http://dev.mysql.com/downloads/connector/php/ というのを見つけたけれど、どうもphp5用のしかないみたい。うー、とりあえずoldpasswordにしよう。
とりあえずパスワード作りなおし。
mysql> update user set Password = old_password('ethna') where Host = 'localhost' and User = 'ethna';
続いて C:\Program Files\MySQL\MySQL Server 4.1 にある my.ini を開いて、[mysqld] のうしろあたりに old-passwords を追加。
[mysqld] # The TCP/IP Port the MySQL Server will listen on port=3306 old-passwords # added
さて、mysqlはどうやって再起動するんだ? コンピュータの管理のサービスのとこか。
これでようやく動くようになった。http://ethna.localhost/mysql.php にアクセスるたびに
id = 1, msg = testtest id = 2, msg = testtest id = 3, msg = testtest id = 4, msg = testtest
ってかんじでinsertされるようになりました。
ほんと長い道のり。まだ入り口にも達してないです。つーかマジwindowsめんどいです。もうめげそう。
次回こそはethnaを入れるぞ!