これは、エックスサーバーでの出来事だ。
調べたら、
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.
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でコンパイルに失敗しました。
(評価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がどのバージョンを使っているのか確認しておこう。
この記事があなたの作業の一助になれば幸いです。