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のパスワードを一時的に無効にして実行したら無事にインストールできました。
MySQL徹底入門 第4版 MySQL 8.0対応
¥3,762 (2025-04-26 09:00 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)MySQL徹底入門 第5版 MySQL 8.4 LTS対応
¥4,620 (2025-04-21 05:28 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)MySQL運用・管理[実践]入門 〜安全かつ高速にデータを扱う内部構造・動作原理を学ぶ
¥3,018 (2025-04-26 16:28 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)2006-09-28