install_driver(mysql) failed: DBD::mysql object version 4.023 does not match ・・・と出たら?

今まで動いていたデータベースにアクセスできなくなっていた。

これは、エックスサーバーでの出来事だ。

調べたら、
install_driver(mysql) failed: DBD::mysql object version 4.023 does not match bootstrap parameter 4.050 at /usr/lib64/perl5/DynaLoader.pm line 213.
Compilation failed in require at (eval 23) line 3.

つまり

install_driver(mysql)が失敗しました:DBD :: mysqlオブジェクトバージョン4.023は、/ usr / lib64 / perl5 / DynaLoader.pm行213のブートストラップパラメーター4.050と一致しません。
(評価23)行3でrequireでコンパイルに失敗しました。

う~ん・・・

つまりだ、perl で データベースにアクセスしようとしたら、4.023の mysqlオブジェクトのパラメータと一致しない。

エックスサーバーなので勝手にデータベースのバージョンをあげる・・・わけもない。

けど、起こってしまっているのは確かなこと。

いろいろなサーバーを使っているため、いちいちサーバーにライブラリをインストールせずに、

CPANからPERLのソースを持ってきて使っているわけだが・・・


余談。

CAPNのPerlライブラリをサーバーにインストールせずに使う方法

CPAN からファイルをダウンロードしてきて解凍すると lib の辺りにPerlのソースファイルがある。

これを使っているサーバーにアップロードしておいて、その場所を指示すれば perl の use コマンドでそのライブラリにアクセスできるようになる。

今回使った DBI をサンプルとして 説明すると。

1、解凍すると展開したフォルダーの中に以下のようなフォルダーが展開される。

その中の lib のフォルダー

試しに DBIのフォルダーを開くと

Perlのソースが入ってるってことでこのフォルダーで間違いない。

2、ターゲットのフォルダーをサーバーにアップする。
cpan のライブラリはまとめておきたいので mycpanと言うフォルダーにアップロードした。

こんな感じ。

呼出しプログラムを上の画像の mainunit.cgi とすると、mainunit.cgi から DBI を呼び出す時、
こんな感じに書く。

0001use lib qw(./mycpan);
0002use DBI;
0003eval{
0004$dsn = "DBI:mysql:database=".$DBname.";host=".$DBhost;
0005$dbh = DBI->connect($dsn,$DBuser,$DBpass);
0006};

知らぬ間にMySQLのライブラリーのバージョンが上がっていた

知らぬ間にMySQLのライブラリーのバージョンが上がっていたのが原因。

最新の perl5 のライブラリを入れてみたら、正常に動いた。

エックスサーバーなのに・・・なんか通知着てたかな?わからんけど、とりあえずこれで解決。

CPANを持ってくるとき気を付けたいのは、ここのところね。

そのCPANがどのバージョンを使っているのか確認しておこう。



この記事があなたの作業の一助になれば幸いです。


TOP