WIN環境でのDBアクセス(PERL+POSTGRESQL)

このQ&Aのポイント
  • WINXPで、PERL+postgresqlを使ってWEBページを作成しようとしています。
  • PERLからpostgresqlをアクセスするためにはpg.pmかdbiの二種類の方法がありますが、簡単なpg.pmを使いたいと思っています。
  • しかし、WIN環境でのpg.pmのインストール方法がわかりません。
回答を見る
  • ベストアンサー

WIN環境でのDBアクセス(PERL+POSTGRESQL)

こんにちわ。 WINXPで、PERL+postgresqlを使ってWEBページを作成しようとしています。 PERL(ver.5)とpostgresql(ver.7.2.1)は無事winにインストールでき 動作しております。 さて、PERLからpostgresqlをアクセスするときに pg.pm か dbiを使う という二種類の方法があると聞きました。 簡単そうなpg.pmを使おうと思うのですが、win環境での インストール方法がわかりません。 unix環境なら pg.pmをダウンロードしてmake PERLのソースに  use Pg;  とでも書いたらいいのでしょうが、win環境での インストールがわかりません。    どなたかご教授願いますか。 尚、参考にしていたページは http://www.itboost.co.jp/perl/perl_11.php です。 よろしくお願いします。

  • jyunk
  • お礼率43% (16/37)
  • Perl
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.1

参考されているサイトはLinuxでの構築が前提とされているので方法は異なります。 WindowsということはActivePerlですか? ActivePerlの場合、PPMと呼ばれるモジュールの自動インストール機能があります。 下記のサイトを参考にしてください。 また、PPM化されたモジュールは開発元のActiveStateのサイトにあります。 http://member.nifty.ne.jp/hippo2000/perltips/ppm.htm http://www.harukaze.net/~mishima/perl/win/winperl.html http://www.mattsuan.jp/~intrasv/perl_inst.html http://member.nifty.ne.jp/hippo2000/perltips/ モジュールの場所 http://www.activestate.com/PPMPackages/zips/ 同じような環境の構築解説 http://www.cc.rim.or.jp/~egami3/postgre/ しかし、Pg.pmはPPMが用意されていないのでご自分でコンパイルしなければなりません。 開発環境(VC++などのCのコンパイル環境)が無いと出来ません。 これには知識と多少の経験が必要なのであなたの技術力次第です。 その場合下記のサイトを参考にして下さい。 http://ml.postgresql.jp/pgsql-jp-old/pgsql-jp/2001Jan/msg00202.html http://member.nifty.ne.jp/hippo2000/perltips/module_install.htm http://www.geocities.co.jp/SiliconValley/2591/mod_perl.html DBIとDBDならPPMがあるので簡単にインストールできます。 DBD-Pgのインストールについては http://www.cc.rim.or.jp/~egami3/postgre/ ここが詳しいです。

jyunk
質問者

お礼

ありがとうございます。 回答を受ける前にdbi+dbdでなんとか接続できたのですが、 教えていただいたURLは大変勉強になりました。 ありがとうございます。

関連するQ&A

  • windowsでperlDBI+postgreSQL

    windowsでperlDBI+postgreSQLに挑戦しています。 今perl上からpostgreSQLに接続しようとしたところ エラーが出て接続できませんでした。 エラー内容は Can't locate DBI.pm in@INC というものでした。 いろいろ調べたのですがDBIモジュールがないのかな?と思い、 ネットでDBI-1.48というファイルを落としてきました。 解凍してみたのですが、今度はこれをどうインストールしてよいのかわからず 詰まってしまいました。 ちなみにエラーがでたperlの中身は *********************************************** #!/usr/bin/perl use DBI; # DBI モジュールを使えるようにします。 # 環境に応じて、各種情報をセットしておいてください。 $dbname = "template1"; $host = "127.0.0.1"; $user = "test"; $password = "pass"; $table = "testtable"; # データベースへの接続。ここで、Pg という名前の DBD を指定しています。 $conn = DBI->connect("dbi:Pg:dbname=$dbname;host=$host", $user, $password ); *********************************************** となってます。 助言をいただけませんでしょうか

    • ベストアンサー
    • Perl
  • PerlからDBの接続

    やまとです。こんにちは。 PerlからDBに接続しているのですが、うまく出来ません。 環境は OS : Windows2000、Perl : ActivePerl628、DB : Sybase11.0.3 DBI : DBI1.18、DBD : DBD_Sybase です。 DBDとDBIインストール後、DBに接続するとエラーが起こります。 エラーが起こる場所は(ソース抜粋記載) use DBI; (←ここは平気) $dbh=DBI->connect($database, $db_user, $db_password) or return 0;      (↑ここがエラー) 以上の箇所です。 もちろん、$database, $db_user, $db_passwordそれぞれの変数には 正しい値が入っています。 次にerror.logの内容ですが、 1つ目は、 Premature end of script headers: C:\・・・・・・・(←実行ファイル名) 2つ目は、 install_driver(Sybase) failed: DBD::Sybase initialize: cs_ctx_alloc() failed at C:/Perl/lib/DynaLoader.pm line 225. 3つ目は at ./test.cgi line 43 (←connectの場所) となっております。 色々調べてみましたが、分かりませんでした。 use DBI; は正常に動作していますので、DBDとDBIのインストールは正常に 出来ていると思うのですが・・・ 同じ経験、又は、このエラーに関して分かる方いらっしゃいましたら、 対処法、ご教授願いたいのですが。 宜しくお願いします。 #環境の情報など不足している部分がありましたら補足させて頂きます。

    • ベストアンサー
    • Perl
  • activeperlでDBD-Pgを扱うと、perlが強制終了する

    まず環境です。 -----[os環境]---------------- windows xp sp2 -----[active perlバージョン]- This is perl, v5.8.7 built for MSWin32-x86-multi-thread -----[cpan環境]-------------- ppm> properties DBI ppm> properties DBD-Pg で結果表示あり(インストール済みと判断) -----[PostgreSQLの環境]------ psql -U postgres -h localhost bookmark ユーザ postgres のパスワード:postgres ログイン可能でDB環境正常と判断。 の環境で、以下のスクリプトを実行すると、perlが強制終了します。 ------[test.pl]-------- #! /usr/bin/perl use DBI; $dbname = "worple"; $user = "postgres"; $passwd = "postgres"; $host = "localhost"; #DBオープン $db = DBI->connect("DBI:Pg:host=$host;dbname=$dbname", $user, $passwd) || die "DBI connect failed : $DBI::errstr"; #DBクローズ $db->disconnect; 1; ---------------- エラーメッセージがでることもなく、googleでも似た症状を探せないでいます。 何かヒントや、参考のURLでもいいのでお教え下さい。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • WindowsのPostgreSQLと Perl DBD::Pgの相性?

    Windows版のPostgreSQLをインストールして、PerlのDBD::Pgのモジュールも ppmでインストールしました。 接続しようとすると、 ダイアログボックスが表示され、Perl Commandlineがこけたというメッセージが表示されました。 LinuxのPostgreSQL7.2.3では同じPerlスクリプトでもエラーなく動作しましたが、Windows版では7系がないようですね。 WindowsでPerlのDBD::Pgで正しく動作している方はいらっしゃいますか? ちなみに DBD::ODBC経由だと動作しています。

  • Pgモジュールについて

    DBI以外でPgというPostgreSQL専用のPerlモジュールが存在するようですが、ActivePerl5.8で利用したいのですが、ppm install Pgとしてもうまくいきませんでした。どこからダウンロードすれば良いのでしょうか?

    • ベストアンサー
    • Perl
  • PostgreSQLをWindows環境で

    会社でデータベース構築をするように言われました。環境は、WindwosNT、PHP、PostgreSQLです。一応自分のマシンにはこれらがインストールされているのですが、PostgreSQLを使ってのデータベースを構築し、それをWindows上でどのように操作していいかさっぱりわかりません。ネットでもいろいろ出ているようですが、大抵がUnixとの説明ばかりで・・・。どなたかお勧めのサイトまたは書籍をご存知でしょうか??? 宜しくお願いします。

  • perl DBD::Pg インストールでエラー発生

    こんにちは。 以下の環境でPerl+postgreSQLのCGIを作成していますが、 DBI、DBD::PGのインストールでエラーが出てしまい大変困っています。 どうぞお力添えをお願いします。 環境---------------------- OS:CentOS VERSION = PostgreSQL 8.1.18 Perl:v5.8.8 -------------------------- ●手順 CPANより下記モジュールをダウンロードし、 ・DBI : DBI-1.609.tar.gz ・DBD::PG : DBD-Pg-2.16.1.tar.gz それぞれ ・perl Makefile.PL ・make ・make install を実行。 DBD::PGの perl Makefile.PL で pg_config のパスを聞かれるが存在しなかったため、ネットの情報から以下を実行。 yum install postgresql-devel 再度DBD::PGのperl Makefile.PL を実施しましたが、以下のようなワーニング(※1)が出力してしまい、 make,make installを実施後に動作確認のスクリプトを実行してもやはりエラーとなってしまいます。(※2) ※1 Warning: prerequisite version 0 not found. Could not eval ' package ExtUtils::MakeMaker::_version; no strict; local $VERSION; $VERSION=undef; do { use version; our $VERSION = qv('2.16.1'); }; $VERSION ' in Pg.pm: Can't locate version.pm in @INC (@INC contains: t/lib /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at (eval 10) line 7, <FH> line 20. BEGIN failed--compilation aborted at (eval 10) line 7, <FH> line 20. WARNING: Setting VERSION via file 'Pg.pm' failed at /usr/lib/perl5/5.8.8/ExtUtils/MakeMaker.pm line 515 Multiple copies of Driver.xst found in: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBI/ /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/auto/DBI/ at Makefile.PL line 263 Using DBI 1.609 (for perl 5.008008 on i386-linux-thread-multi) installed in /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBI/ Writing Makefile for DBD::Pg ※2 install_driver(Pg) failed: Can't locate version.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/DBD/Pg.pm line 20. BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/DBD/Pg.pm line 20. Compilation failed in require at (eval 3) line 3. Perhaps a module that DBD::Pg requires hasn't been fully installed at ./test02.pl line 5 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • perlでDBアクセスする際にapache設定

    本日、DBI->CONNECTで返ってこないと質問をしたものです。 色々と調べているうちに、もしかしたらDBアクセスはおわり、その後のCGIが表示できなくなっているかもしれないと思うようになりました。 ORCLE9iがあるあとで、PERL,Apacheをインストールしました。 DBアクセスをしない状況ですと、CGIのプログラムは何の問題も無く、動きます。 ただ、DBアクセスしようとするとエラーもでない状況で、画面に何も出ません。 ApacheのORACLEに関する環境設定が必要なのでしょうか? 環境は、Windows XP      Active Perl 5.8.7.813        DBI 1.602 ,DBD-Oracle 1.17      Apache 2.0.54 どなたか、わかる方いらっしゃいますでしょうか? この件で2日悩んでおります。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • Pg.pmモジュールがロードできない

    現在、Webサーバが古くなったため、新しいWebサーバにアプリケーションを移行しようとしています。PerlもPostgreSQLもインストールし、プログラムを実行するのですが、以下のエラーメッセージが表示されます。 エラーメッセージ表示: Can't locate Pg.pm in @INC (@INC contains: /usr/lib/perl5/5.8.5/i386-linux-thread-multi (中略)BEGIN failed--compilation aborted at mgdbrest.pl line 37. でエラーになってしまいます。 環境: パッケージのインストール確認をすると問題なく、Pg.pmパッケージもインストール済みです。またPg.pmファイルも存在します。 またperl -Vコマンド実行でも@INCも表示されます。 OS: MiracleLinux4.0 %rpm -qaの結果 perl-DBD-Pg-1.31-6.1AX postgresql-libs-8.0.8-1.2AX postgresql-pl-8.0.8-1.2AX %Pg.pmファイルの登録状況 /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBD/Pg.pm %perl -Vの結果(一部抜粋) Characteristics of this binary (from libperl): Compile-time options: DEBUGGING MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL_IMPLICIT_CONTEXT Built under linux Compiled at Aug 23 2006 01:53:27 @INC: /usr/lib/perl5/5.8.5/i386-linux-thread-multi /usr/lib/perl5/5.8.5 /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi 質問: 対処方法を御存知の方がみえたら教えてください。やはり再インストールしなければならないのでしょうか。

    • ベストアンサー
    • Perl
  • perlからDBIを使用したpostgresへの接続でエラー

    perlからDBIを使用して、データベースにアクセスしたいと思っていますが、connectで下記のようなエラーが出力され接続できません。 ↓↓↓↓↓↓apacheのエラーログ↓↓↓↓↓↓↓ DBI connect('dbname=[mscdb]','[postgres]',...) failed: FATAL: database "[mscdb]" does not exist at /web/member/cgi-bin/dbitest.pl line 8 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ mscdbがないとエラーが出力されているように思いますが、mscdbは存在します。どういった原因が考えられるでしょうか? プログラムには以下のように記述しています。 #!/usr/bin/perl use DBI; use constant DBNAME => 'DBI:Pg:dbname=[mscdb]'; use constant DBUSER => '[postgres]'; use constant DBPASS => '[××××]'; DBI->connect( DBNAME, DBUSER, DBPASS, { AutoCommit => 0 }); print "Content-Type: text/plain\n\n"; print $DBI::errstr? $_: 'Done'; 環境は以下の通りです。    perl v5.8.2    postgres v8.1.2 vine linux dbd v1.49

    • ベストアンサー
    • Perl