システム奮闘記:その11
PostgreSQLとMS-Accessの連動までの長い道程
(2002年6月13日に掲載)
はじめに
うちの会社で、少しづつ浸透していくPostgreSQL。
気が付かない間に、うちの会社や社員がオープンソースの恩恵を受けている。
さてさて、PostgreSQLのデータベースのデータの変更することもある。
一応、私がWebで追加・変更・削除できるような画面を作成している。
でも、こういう声が出た。
エクセルのような表で取り出せたら修正が楽なのに
そこで、ODBCを使ってPostgreSQLとMS-Accessの連動をすることにしました。
うまくいけば、このページを書かなかったけど、毎度の如く、設定地獄に陥ったので、
そのネタを披露することにしました。
題して、「PostgreSQLとMS-Accessの結婚物語」 ← おい、ちゃうやろ!!
はじまり、はじまり。
ODBC接続に挑戦! ODBCドライバのダウンロード
さて、この設定。以前から、ちょこちょこと触っていたが、うまくいかなかった。
けれど、社内で要請がなかったので
まぁ、ええか
で放置していた (^^;;
しかし、要請があると、実現しないといけない。
まずは検索サイトで発見した。
「インターウィズのPostgreSQL ODBC Driver 日本語版」のホームページを見に行った。
インターウィズ PostgreSQL ODBC Driver 日本語版
そして、PostgreSQL日本語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を使っても全然データベースを開くことができなかったことがある。
その時、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.1 | RedHat6.2 |
Access2000 | Windows98 |
組み合わせ(2) |
PostgreSQL-7.2.1 | RedHat6.2 |
Access2000 | Windows98 |
まだ、Access97 のカップルは検証していませんでした (^^;;
さて、結婚がうまくいけば、結婚生活を見てみたいもの。
とはいえ、まだ、結婚式場から退場したばかりで、結婚生活はこれからのため、
事例は紹介はできませんが、これから事例が出てくると思います。
そこで、いずれは2つのデータベースの結婚させてからの利用方法を
紹介していきたいと思います。
それにしても、PostgreSQLとMS-Accessとの連動が可能になったのは大きい。
使い方は、これから手探りという感じだけど、有効な活用法の可能性は秘めている。
ジワジワと、オープンソースの可能性の大きさを実感する今日この頃です。
次章:「名ばかりの携帯ソリューション」を読む
前章:「携帯3社でのコンテンツ作成物語」を読む
目次:Linux,オープンソースで「システム奮闘記」に戻る