• 締切済み

DBIを使ったデータベースサーバー構築方法

先日、ppmの起動方法で質問させていただいた者です。 あれから構築の為作業を進めておりますが、行き詰ってしまったのでアドバイスをいただければと思います。 私のやるべき手順で私の思ってる流れを書きますので抜けや誤りがあればご指摘いただければと思います。 ■目的 現在windows2000にpostgreSQL8.0とActivePerl5.6、HTTPdにanHTTPdを使ったデータベース連携CGIのWebサーバーを運用しています。 そのWebサーバーを新たにWindowsXPにpotgreSQL8.4、ActivePerl5.8、同じくHTTPdにanHTTPdを使ったサーバーに移行しようとしています。 ■現状できている部分 postgreSQL、ActivePerl、anHTTPdはインストール済みで、localhost上でWebの表示をさせたところ、HTMLとCGIのみについては正常に表示してます。 ■現状できていない部分 データベースを参照した結果を出すCGIでエラーが出ます。 エラーは以下のとおり exist error!! -> Can't call method "prepare" on an undefined value at C:\httpd\webserver\public_html\cgi-bin\data\data.cgi line 118 ■やるべきと思っている作業の流れ ・postgreSQL、ActivePerl、anHTTPdのインストール ・ppmでDBIのインストール ・旧サーバーからpg_dumpallでSQLデータのバックアップ ・新サーバーにpsqlでバックアップしたデータからのリストア 以上 何か作業に抜けはありますでしょうか? ちなみにリストアでも問題がおきていて、エラーが表示されるのですが、エラー自身が文字化けしていて何が問題かよくわかりません。 SYSIDとい文字とHINTという文字EUC_JPという文字は確認できました。 この説明ではうまく伝わらないと思いますが、何か注意点があれば教えてください。 よろしくお願いいたします。

みんなの回答

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.5
  • hok212
  • ベストアンサー率66% (100/150)
回答No.4

> DBD::PGというのは入っておりません。 > ppmには見つかりませんでした。 普段はLinuxでpostgresqlやmysqlを使っているので、ppmはまず使わないのですが、試しにやってみたところ確かにppmでは見つかりませんね。 その代わりcpanシェルであればDBD::Pgが見つかりました。 cpanの使い方も基本的にppmと同じで、コマンドプロンプトを起動後 > cpan [Enter] とやります。 するとcpanシェルが起動しますので、 cpan> install DBD::Pg [Enter] とやってやればOKです。

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.3

> Can't call method "prepare" on an undefined value at C:\httpd\webserver\public_html\cgi-bin\data\data.cgi line 118 このエラーメッセージは、 prepareメソッドを呼び出そうとした変数が undefined であることと、その位置を表しています。 以上は、前回書いた事です。 それを踏まえて、ご自分で調べてください。

tukikageran
質問者

お礼

申し訳ないのですが、このサイトは質問をし回答をいただくところであり、「ご自分で調べてください」では私も解決しようがありません。 どこそこに情報があるからそこをよく読んでくださいならまだわかりますが、自分で調べてくださいの回答からでは何も進めません。 何も調べずに質問しているように見えるのかもしれませんが、私もキーワードを変えながらgoogleで検索するなどしており、それでも解決につながる情報が得られなかったので最後の手段としてこちらで質問をしております。 初心者ゆえに玄人の方からは見当違いのことをしているようにも見えるかもしれません。 検索するキーワードがそもそも適切でなく情報にたどり付けてないのかもしれません。 Perl+postgreSQL+Widonwsの組み合わせはネットでも情報が少なく、またサイトも古ければリンク先がなくなっていたり、バージョンが違うゆえに適切なファイルが異なっていたりと私の今やるべき情報にたどり着くのに苦労しているのが現状です。 レベルが低いと感じられるかとは思いますが、私なりにやりたいことがあり、独学ながら時間と手間をかけてやっております。 独学ゆえに皆様のご助言がないと進めないこともあり、こちらで質問をさせていただいております。 それでいただいた回答がご自分で調べてくださいでは、私もがっくりします。

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.2

> Can't call method "prepare" on an undefined value at C:\httpd\webserver\public_html\cgi-bin\data\data.cgi line 118 このエラーメッセージは、 prepareメソッドを呼び出そうとした変数が undefined であることと、その位置を表しています。 その程度は読み取れる実力が無いと、データベースアクセスは無謀だと思います。 No.1 さんのご指摘の DBD::Pg は、それが無いと connect に失敗して DBHオブジェクトが undefined になるという、いかにもありそうな推測だと思いますが、実際にそれが的中となると、 connect のエラーチェックをしてないのでしょうか? 上記 2点を考え合せると、失礼ながら、やろうとしている事は質問者さんの実力では厳しいんじゃ無いかと思います。 遊びや勉強目的なら良いですが、仕事なら、応援を求める事をお勧めします。

tukikageran
質問者

お礼

ご回答ありがとうございます。 仕事ではなく仲間内で集まるコミュニティ用のHPを作っております。 仕事ではない為、応援を求めることができずにこちらに質問させていただいております。 よろしくお願いいたします。

  • hok212
  • ベストアンサー率66% (100/150)
回答No.1

Postgresqlのデータベース・ドライバ(DBD::Pg)は入っていますか? http://perldoc.jp/docs/modules/DBD-Pg-1.22/Pg.pod

tukikageran
質問者

お礼

ありがとうございます。 DBD::PGというのは入っておりません。 どこで落とせますか? ppmには見つかりませんでした。