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