システム奮闘記:その11

PostgreSQLとMS-Accessの連動までの長い道程



Tweet

(2002年6月13日に掲載)
はじめに

  うちの会社で、少しづつ浸透していくPostgreSQL。
  気が付かない間に、うちの会社や社員がオープンソースの恩恵を受けている。
  さてさて、PostgreSQLのデータベースのデータの変更することもある。
  一応、私がWebで追加・変更・削除できるような画面を作成している。
  でも、こういう声が出た。

  エクセルのような表で取り出せたら修正が楽なのに

  そこで、ODBCを使ってPostgreSQLとMS-Accessの連動をすることにしました。
  うまくいけば、このページを書かなかったけど、毎度の如く、設定地獄に陥ったので、
そのネタを披露することにしました。

  題して、「PostgreSQLとMS-Accessの結婚物語」 ← おい、ちゃうやろ!!
  はじまり、はじまり。

ODBC接続に挑戦! ODBCドライバのダウンロード

さて、この設定。以前から、ちょこちょこと触っていたが、うまくいかなかった。 けれど、社内で要請がなかったので  まぁ、ええか  で放置していた (^^;; しかし、要請があると、実現しないといけない。 まずは検索サイトで発見した。  「インターウィズのPostgreSQL ODBC Driver 日本語版」のホームページを見に行った。 インターウィズ PostgreSQL ODBC Driver 日本語版 そして、PostgreSQL日本語ODBCドライバーを手にいれて、圧縮ファイルを解凍した。
ODBCドライバを展開した様子
ODBCドライバを展開した様子

 この時・・・

  psqlodbc.dllがあらへん!!

  実は、DLLファイルなどの設定ファイルなどは、隠れて見えない場合があるが、
そのことをすっかり忘れていた。

 これが悲劇の始まりだった!!

  さて、DLLファイルがないなぁと思い、同じページを読んでいると
英語版のドライバーもあり、大丈夫そうだったので英語版を入れようと思い、
英語版をダウンロードする。
  そして、実行させると、ODBCマネージャーをインストールしますかと出る。
既に入っているので無視して、ドライバーだけをインストール。
  後は、Windowsで、コントロールパネルのODBCを触ると OKなので設定をした。
  そして、MS-Accessを立ち上げ接続する。

  結果は、つながらない (TT)

  うーん、FAQを見てもよくわからない。

  翌日、ふと、まいパパさんのホームページを見た。
  PostgreSQLのODBCドライバー設定があったので読んでみた。

  そういえば、Linux側の設定は何もしていなかった事を思い出す。
さっそく、$POSTGRES_HOME/data/pg_hda.conf の編集を行う。
  これをしないと、他のマシンからのアクセスができないからだ。
  実は、まいパパさんのメモを見るまで、その事を知らなかった (^^;;

  気を取り直して、もう一度、接続する。

  結果は、つながらない (TT)

データベースのリンクテーブルの画面
データベースのリンクテーブルの画面

  どこが悪いのだろうかと悩む。
  接続先のLinux側を見てみると、こんなエラーを吐き出していた。

エラーの内容
[postgres@dserver]$ pq_recvbuf: unexpected EOF on client connection
ERROR:  Relation 'msysconf' does not exist

[postgres@server]$ pq_recvbuf: unexpected EOF on client connection
pq_recvbuf: unexpected EOF on client connection

  エラーを見て、私はLinuxの設定に問題があるのではと思った。
 それが結果的に・・・

  第2の悲劇につながることになった!!

  まずは、msysconfのエラーを消すことから考えた。
  googleで検索すると、無視して問題ないと書かれたページがあった。
  まずは、一件解決ということで、次に、pq_recvbufの解決に乗り出した。
  同じように、 googleで検索したが

 日本語のページが見つからない (TT)

  英語のページを根性で解読していかないといけない。
  しかも、MLの内容のログや掲示板の内容なので、前後の文脈がわからないだけに解読困難。
  それ以外にも英語を読むのが・・・。

 英語なんて読みたくないのら (TT)

 しかし、英語を読まねば前に進まない・・・。

  なんとかしてでも、pq_recvbufの解決に乗り出したが、うまくいかない。

  どんどん混乱に陥ってくる  (@o@)

  色々な、ODBCに関するホームページを調べてみると
PostgreSQLのコンパイルの時に、ODBCのオプションをつけて
コンパイルが書かれていたので、再インストールをする。
  結果は・・・

 アカンかった (TT)

  もうお手上げ!!
  そこで、LILOのMLに泣きつくことにした。

  まいパパさんから、いくつか助言を頂いた。
  そこで、助言通りにやってみることにした。
  MS-Access2000ではバグがあるということで、Access97でやってみた。ダメだった。
  PostgreSQLのバージョンを 7.1.1 から 7.2.1 に上げたがダメだった。

  完全に混乱状態に陥った。
  なんで私がシステム構築する時は、トラブルが多発するの (TT)

  さこださんから、pgaccessが作動するかどうか確認してみてはと助言を頂いた。
  そういえば、pgaccessは、インストールしたものの、私はほとんど使っていない。
  久々に使ってみることにした。
 
  pgaccessでデータベースを開く際に下の絵のような画面が出てくる。

pgaccessの画面
pgaccessの画面

  以前、pgaccessを使っても全然データベースを開くことができなかったことがある。
その時、hostの部分にあるlocalhostを削除したらアクセスできることを教えてもらったことがある。

  ここで、ふと思った。
  データベースへの接続制限の設定ファイルの $POSTGRES_HOME/data/pg_hda.conf を
編集をしているから、別に、localhostを削除しなくても良いのではと思った。
  そこで、localhost 削除しないでデータベースを開くと、うまくいった。
  面白くなって、思わず、他のPostgreSQLの入ったマシンにアクセスを試みる。
結果は、うまくいった。
  なるほど、$POSTGRES_HOME/data/pg_hda.confを編集すれば、
他のマシンのPostgreSQLにも接続できる。
  接続先のマシン(PostgreSQLの入ったLinux)を見てみると下のエラーを吐き出していた。

エラーの内容
[postgres@server]$ pq_recvbuf: unexpected EOF on client connection
pq_recvbuf: unexpected EOF on client connection

  ODBCの接続が、うまくいかない時のエラーと同じだった。
  psaccessでデータベースへの接続が、うまくいっているのに
pq_recvbufのエラーを吐き出している。
  もしかして、このエラーは無視できるエラーで、設定間違いはWindowsにあるのではと思った。

  そこで、もう一度、「インターウィズのPostgreSQL ODBC Driver 日本語版」のホームページを見に行った。

  PSQLODBC.dllがドライバ

  もしかして、DLLファイルだと表示されないのではと思い、Windowsの設定を変え、
隠しファイルや、設定ファイルを表示させるようにした。

隠しファイルを表示させると
隠しファイルを表示させた画面

  案の定、ドライバーが表示された。
  そして、まいパパさんのメモ通りに、psqlodbc.regをクリックして、
psqlodbc.dllを、\windows\systemのフォルダ─に入れて設定すると、

テーブルリンクの画面
テーブルリンクの画面

  無事、データベースのテーブル名が出てきた。
  七転八倒しながらも、LILOのMLで助けてくださった方々の助言により
ようやく辿り着いた結果だった。思わず感激 (TT)

  こうして、めでたくPostgreSQLとMS-Accessとの結婚がうまくいった。

  喜ぶ前に結婚できたカップルを紹介せねば。

稼働した組み合わせ
組み合わせ(1) PostgreSQL-7.1.1RedHat6.2 Access2000Windows98
組み合わせ(2) PostgreSQL-7.2.1RedHat6.2 Access2000Windows98

  まだ、Access97 のカップルは検証していませんでした (^^;;

  さて、結婚がうまくいけば、結婚生活を見てみたいもの。
  とはいえ、まだ、結婚式場から退場したばかりで、結婚生活はこれからのため、
事例は紹介はできませんが、これから事例が出てくると思います。
  そこで、いずれは2つのデータベースの結婚させてからの利用方法を
紹介していきたいと思います。

  それにしても、PostgreSQLとMS-Accessとの連動が可能になったのは大きい。
  使い方は、これから手探りという感じだけど、有効な活用法の可能性は秘めている。
  ジワジワと、オープンソースの可能性の大きさを実感する今日この頃です。

参考サイト
(1) インターウィズのPostgreSQL ODBC Driver 日本語版のホームページ
(2) まいパパさんのホームページ
http://www.niji-net.com/


次章:「名ばかりの携帯ソリューション」を読む
前章:「携帯3社でのコンテンツ作成物語」を読む
目次:Linux,オープンソースで「システム奮闘記」に戻る

Tweet