• 締切済み

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には見つかりませんでした。

関連するQ&A

  • データベースサーバー構築

    質問場所がここで良いか少し不安ですが 主にWebで公開するデータベースのシステムを作ろうとしています 自分のスキルの範囲でやろうとしていますが少し分からないことがあるので 教えてください まず 自分のできること(やっていること)は ・Windows系サーバー(IIS)を使ってVBスクリプト(ASP)で ローカルにあるMDBファイルにアクセスし商品を紹介する動的ページの作成 です。 今後複数ユーザーでデータベースを使うことになるので システムを変えていく必要がでてきて MDBはダメだという事になり色々調べた結果、今後のことも考えWebサーバーとは別に データーベースサーバーを作ってやると言う結論になりました 分からないこと(あやふやな理解になっていること) 1.データベースサーバーとは何か?  これは OSは別として、SQL Server、オラクル、MYSQLといった  RDBMSをインストールしただけのデータベース置き場専用という感じのPCを指すと言うことで良いでしょうか?  例えば Win2000のIISでwebサーバーを作りその中のASPページから  別PCにあるデータベースにアクセスする構成がデータベースサーバーを別に設けると言うことで正しいのかどうかと言うことなのです。 2.データベースは何がよいか?(SQL Serverでよいか?)  本来であれば、webで商品在庫を公開することがメインで更新頻度が少ないデータベース  (300人ぐらいで共有し1万~3万レコードです)です、なおかつ複雑なSQLは発行しません。  ほぼASPからの接続で抽出(ID=** という単純な抽出条件)しか使わない、あとは並び替え位なので  MYSQLが向いているようでしたが、私はLinux系は全く分かりません。  なので メンテナンスの面や勉強する時間の節約からすれば  Windowsで動くSQL Serverが良いと思うのですが(MYSQLもWindowsで  動くけど得意とする高速性はLinux系でないと発揮しないみたいなのでやめようと思っています)  上記のような条件と使い方の場合、そんなに処理時間やマシンの負荷に両者間では大差があるのでしょうか?  MDBの時でもあまり不具合を感じなかったので、それよりは格段にSQL Serverは早いし負荷が少ないと聞いていますので  大丈夫かなと思っています。 3.SQL ServerをインストールするPCは何が最適か?  先も述べたようにデータベース専用として使う予定ですが  Win2000でよいのでしょうか?(XPより2000の方が安定がよいと思うので) それともWin2003Serverに  インストールできるならその方がよいでしょうか?  とにかく安定度が一番なのですが、そもそもWin2003Serverに  インストールできるのでしょうか?(もうすぐ2008?がでるからそれにしようかとも検討中です) 4.最終的に自分の思っていることと実体の構成(理解)は理解は以下のような感じで正しいのでしょうか?    複数でデータベースを共有するため、MDBでなくネットワークに強い (共有データベースで壊れにくい?壊れない?)データベースに変えるため、windowsで動くSQL Serverを使う  そのSQL ServerはwebサーバーがあるPCとは別のPCにインストールして使う  (データベースサーバーを別に用意する)ことでwebサーバーの負荷も減らし、データベースも快適に動くようにする 最終的にはWin2003Server×2台で1方はwebサーバー1方はSQL Server をインストールして使うことで上記を実現させる 5.SQL ServerのデータベースはMDBのような最適化というような作業が必要なのでしょうか?  そもそも 似ているようで違う MDBとSQL Serverでその特徴がきちんと理解できていないので  愚問なのかもしれませんが 気になるので教えてください 6.オラクルと違いSQL Serverはレコードの更新や追加の時  その行(レコード)だけロックすると言うことができない?  ようなので、Aさんが自分の商品を更新中にBさんも更新する  と言うようなことが起こった場合(MDBはこれになると壊れると書いているので MDBをやめました)  Aさんの更新が終わるまでBさんは更新できない(更新終了まで待つ)と言うことになるのでしょうか?  また、このとき商品一覧を要求された場合、更新中の情報はどの様になるのでしょうか?(更新終了まで見れない?) なんか 分かりにくい質問になってしまいましたが、お金をかけて 買ったはいいが、理解不足でやりたいことができなかったと言うことは 避けたいので ご教授下さい。 よろしくお願いします。

  • Webサーバーとデータベースサーバーを別々のPCで構築するには?

    現在はWebサーバーのPCにデータベース(PostgreSQL)をインストールして使っています。 メンテナンス性やアクセスの分散を考慮して別PCに分けたいと思っていますが、具体的にどうやっていいかまったくわかりません。 PCとPCはLANでつなぐしかないとは思いますが、両方ともwindowsだった場合ネットワークドライブくらいしかやったことないので、データベースを他のPCで活用する場合どのような連携が必要になるのでしょうか。 参考になるサイトなどありましたら教えてください。

  • どうやってデータベースサーバをイントラネットにおくのでしょうか

    postgreSQLとPHPで出来る事をウェブページで色々とやってみたいのですが、データベースをレンタルサーバ上に置くのは怖いのでやりたくないのです。この場合はどうすれば良いのでしょうか。イントラネット上でウェブサーバというかデータベースサーバを用意しないといけないのでしょうか? また、レンタルサーバ上にデータベース情報を置くのはセキュリティ上危険だと思うのですが、実際はそうでもないのでしょうか? 大手のウェブサイトでは通常このような時、どのような環境で制作しているのでしょうか?

  • Windows2003serverでActivePerlのDBIモジュ

    Windows2003serverでActivePerlのDBIモジュールのインストールができません。 PPMでDBIモジュールをインストール使用としたところ下記のエラーが出てしまい、インストールができませんでした。 Error installing package 'DBI' : Error reading http://ppm.activestate.com/PPMPackages/5.6/MSWin32-x86-multi-thredad/DBI-1.48.tar.gz これをインストールする方法はなのでしょうか? ちなみに、ActivePerlのバージョンは5.6.1で、諸事情によりアップグレードすることができません。 ※補足 直接DBI.ppdをインストールするという記事を見つけましたが、ダウンロード先のURLになぜかベーシック認証がかかっていてダウンロードできませんでした。 ■直接DBI.ppdをインストール http://kisa.homeip.net/wiki/?MovableType%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%28Windows%CA%D4%29 ■インストール先URL(ベーシック認証がかかっていて入れません) http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/ どなたか分かる方いらっしゃいまたらよろしくお願い致します。

    • ベストアンサー
    • Perl
  • SQL Server 2000のデータベースサーバーインストール方法を教えてください

    Windows2003 Server評価版 SQL Server 評価版 を使用して、SQLServer2000をインストールしています。 WEBよりダウンロードしたファイルを使用しています。 インストールマニュアルを見ていると、 1.SQL ServerのCDをセットする 2.SQL Server 2000コンポ―ネントをクリックする 3.データベースサーバーのインストールをクリックする  と書いてあるのですが、WEBよりダウンロードしましたのでCDがありません。 どのようにデータベースサーバーをインストールすればよいのでしょうか? 初歩的な質問ですみません。 どうぞよろしくお願いいたします。

  • webサーバーの構築(windows2003)について

    web公開用サーバを(UNIX=>Windows2003)移転することになり、作業を担当しています。 データの移設は終了しましたが、webページにはCGIとPHPがあり、そのためにアパッチとパールを組み込む作業が残っています。 ローカル環境ではテスト用に組んだことがありますが、サーバを触るのも初めてで何から手を付けていいのか分かりません。 業者さんは「がんばって~」と帰って行かれました。 CGIとPHPの知識はフリーのものを一部改変する程度です。 お力添えください。 ■教えて!------------------------------------- ●CGIとPHPを動かせる状態にしたい ●今までのCGIとPHPを動かすためにはパール・アパッチは古いバージョンが良い? ●サーバにはJavaScriptはインストールが必要? ●証明書の自己発行の方法はどうしたらいいの? ■環境----------------------------------------- WindowsServer2003SE HP X86 Crass PC Xenon 2.80GHz 以上です。週明けまでに回答あるとうれしいです。

  • PostgreSQLをインストールしたサーバーとは別のサーバー上で、phpPgAdminを動かせる?

    PostgreSQLがインストールされているDBサーバにはPHPがインストールされていません。 よって他のWebサーバへphpPgAdminをインストールして、 DBサーバへ接続し、データベースの編集を行おうと考えています。 このようなことはphpPgAdminで可能でしょうか? ご回答よろしくお願いします。

  • いま自宅(linux)でPostgresqlでデータベースを構築し、1

    いま自宅(linux)でPostgresqlでデータベースを構築し、10万件規模のデータを管理しています。 このデータは日々更新されるのですが、この更新情報を 外部のレンタルサーバ内のPostgresqlに簡単にコピーする方法はないでしょうか? レンタルサーバ側はport=80/443くらいしか通さないので postgresqlに直接接続することができません。 今現在は、 自宅のpostgresqlからsql形式でdumpファイルを作成し、 その中身から比較的新しいSQLを抜き出し、  レンタルサーバ側のphppgadminをたちあげ、さきほどSQLをコピー&ペーストし実行 という面倒なことやってます。 上記を解決する ソフトやツール or レンタルサーバに置くWebアプリサンプル or 参考情報 などあればおねがいします。

  • 複数のサーバー間の各データベースの同期の方法

    こんにちは。 現在、WinXP、PHP5+MySQLにてデータベースWEBアプリケーションを作成していますが、問題に直面してしまいましたので、 こちらを利用させて頂いております。 どうぞ宜しくお願い致します。 以下が質問の内容です。 AのWEBサーバーにはAデータベース、 BのWEBサーバーにはBデータベース、 CのWEBサーバーにはCデータベースがあり、 AもBもCもまったく同じWEBアプリケーションとなっていて、 AからもBからもCからも、新規データ登録が可能となっているのですが、 AとBとCから新規登録された、または、更新されたデーターベースの登録データを自動的に3つのサーバー間ですべて同期したいと考えておりますが、その方法がまったく思い浮かびません。 具体的にどのような方法があるのか、又は、不可能なのか、 解る方がいらっしゃいましたら、ご教授頂けると幸いです。 説明下手ですので、説明が不適切でしたら、 すぐに補足させて頂きますので、 どうぞ宜しくお願い申し上げます。

  • CGIが動かない

    ActivePerlをインストールし終えたのです。 さらに、自宅サーバのCGI動作はOKにしてあります。 なのに、CGIが動きません。 ※http://www.***********/test.cgi のようにアクセスしてるのですが・・・ OS:Win 2000 Server , AN HTTPD を使用しています。