今まで動いていたデータベースにアクセスできなくなっていた。
今まで動いていたデータベースにアクセスできなくなっていた。
これは、エックスサーバーでの出来事だ。
調べたら、
つまり
う~ん・・・
つまりだ、perl で データベースにアクセスしようとしたら、4.023の mysqlオブジェクトのパラメータと一致しない。
エックスサーバーなので勝手にデータベースのバージョンをあげる・・・わけもない。
けど、起こってしまっているのは確かなこと。
いろいろなサーバーを使っているため、いちいちサーバーにライブラリをインストールせずに、
CPANからPERLのソースを持ってきて使っているわけだが・・・
余談。
これを使っているサーバーにアップロードしておいて、その場所を指示すれば perl の use コマンドでそのライブラリにアクセスできるようになる。
今回使った DBI をサンプルとして 説明すると。
1、解凍すると展開したフォルダーの中に以下のようなフォルダーが展開される。
その中の lib のフォルダー
試しに DBIのフォルダーを開くと
Perlのソースが入ってるってことでこのフォルダーで間違いない。
2、ターゲットのフォルダーをサーバーにアップする。
cpan のライブラリはまとめておきたいので mycpanと言うフォルダーにアップロードした。
こんな感じ。
呼出しプログラムを上の画像の mainunit.cgi とすると、mainunit.cgi から DBI を呼び出す時、
こんな感じに書く。
最新の perl5 のライブラリを入れてみたら、正常に動いた。
エックスサーバーなのに・・・なんか通知着てたかな?わからんけど、とりあえずこれで解決。
CPANを持ってくるとき気を付けたいのは、ここのところね。
そのCPANがどのバージョンを使っているのか確認しておこう。
この記事があなたの作業の一助になれば幸いです。
これは、エックスサーバーでの出来事だ。
調べたら、
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 を呼び出す時、
こんな感じに書く。
use lib qw(./mycpan); use DBI; eval{ $dsn = "DBI:mysql:database=".$DBname.";host=".$DBhost; $dbh = DBI->connect($dsn,$DBuser,$DBpass); };
知らぬ間にMySQLのライブラリーのバージョンが上がっていた
知らぬ間にMySQLのライブラリーのバージョンが上がっていたのが原因。最新の perl5 のライブラリを入れてみたら、正常に動いた。
エックスサーバーなのに・・・なんか通知着てたかな?わからんけど、とりあえずこれで解決。
CPANを持ってくるとき気を付けたいのは、ここのところね。
そのCPANがどのバージョンを使っているのか確認しておこう。
この記事があなたの作業の一助になれば幸いです。
スポンサーリンク