DBD::mysqlのインストール
MySQLサーバ運用中にPerlでDBD::mysqlモジュールが必要になり、インストールすることになりました。 Perlには便利なCPANコマンドがあるので、これを使ってインストールしてみました。 トラブルがありながらもなんとかインストール完了。 これはその記録です。
CPANを使うと以下のコマンドで万事オッケーなはずなのですが、、
#perl -MCPAN -e shell cpan> install DBD::mysql
どうやら、今回はDBD::mysql 3.0007をインストールするみたいなのですが、2行目で以下のエラーが出てしまいました。
dbdimp.c: In function `mysql_st_internal_execute': dbdimp.c:2390: parse error before `rows' dbdimp.c:2467: `rows' undeclared (first use in this function) dbdimp.c:2467: (Each undeclared identifier is reported only once dbdimp.c:2467: for each function it appears in.) make: *** [dbdimp.o] Error 1 /usr/bin/make -- NOT OK Running make test Can't test without successful make Running make install make had returned bad status, install seems impossible
どうやらdbdimp.cファイル(場所はroot権限であれば
/root/.cpan/build/DBD-mysql-3.0007/dbdimp.cにあります)
に原因がある様子。
検索して調べてみると、2390行目のmy_ulonglong rows= 0;という行があやしいとのこと。 この行をちょっと上の
D_imp_sth(h); D_imp_dbh_from_sth; STRLEN slen; bool bind_type_guessing; char *sbuf = SvPV(statement, slen); char *table; char *salloc; int htype; my_ulonglong rows= 0; #←ここ
の位置に移動させました。 その後、再びcpanに戻って、
cpan> make DBD::mysql
を行うと、見事成功。 そのままインストール
cpan> install DBD::mysql
うまくいくと思ったのですが、今度は
DBI->connect(test) failed: Access denied for user: 'root@localhost' (Using password: NO)
のエラーが出てしまいました。 しかし、これはすでに運用中のMySQLサーバのrootのパスワードを設定したままにしていたので発生した問題で、rootのパスワードを一時的に無効にして実行したら無事にインストールできました。
2006-09-28