2007/06/16

よくわからんけど、はまった

自分が受け持ってる仕事じゃないけど、気になったので手伝おうとしたけど全くわからなかった。
mod_perl2、ModPer::Registryで動かしてるプログラムが、phpのブログツールをインストールしたら動かなくなった。
phpで使う(らしい) libmysqlclient.so.14だかを入れると動かなくなる。

mod_perl自体は動いていて、原因を探って行くとDB接続でエラーが出てていた。
エラーがMySQLのリファレンスにも載ってるこれ。
A.2.4. Client does not support authentication protocol エラー

んで、とりあえずパスワード形式を古いのに変更。
UPDATE user SET Password = OLD_PASSWORD('mypass')
webで適当にあさった情報によるとたいていこれで解決して、おめでとうって話なんだけど、これをやっても駄目だった。

接続自体はできるようになったけど、
$sth = $dbh->prepare( $query ) or die $dbh->errstr;
prepareを実行すると、エラー出力もでないし、標準出力も出ない状態になってしまった。

perlのDBI関係のモジュールが悪いのか、ModPerl::Registryが悪いのか、MySQLが悪いのかさっぱりわからなかった。
mod_perlじゃなくてCGIとして実行するとエラーもなく普通に動いていた。
libmysqlclient.so.14を入れて最初のエラーがでるってことは、clientが変更されてるってことだよね。
何気なくMySQLとかをDBIとかモジュール経由で使用してるけど、実際どうやってDBにアクセスしたりしてるのか知らないことに気づいた。
DBI、DBD::mysqlあたりのソース読めば何かわかるだろうか。

0 件のコメント:

コメントを投稿