今日はAccessを使っていたハマった話。
ぼくはシステムの保守作業で、Accessをよく使います。
ある日、PostgreSQLのテーブルをODBC経由でリンクテーブルを作成して、Accessで開こうとすると下記のようなエラーが発生しました。
ODBC--呼び出しが失敗しました。 Could not send Query(connection dead); Could not send Query(connection dead)(#26)
結論を先にいうと、PostgreSQLのバージョンが古い場合の、ODBCドライバーの指定が悪かったのです。
「ODBC–呼び出しが失敗しました。」自体はよく出るメッセージで原因は多岐にわたります。このメッセージだけでの原因特定は難しいかもしれません。
今回の現象としては、
値が表示できていないだけっぽいので、文字コード?そんな指定あったっけ?
Accessでリンクテーブルを作る際の設定を探してみましが、結局見つからず。
原因はODBCの設定でした。
上記エラーになった設定はコチラ↓
「PostgreSQL ANSI」です。本体のPostgreSQLの文字コードがEUC-JPとなっているため、このドライバーを指定していました。
それを「PostgreSQL」で接続を作り直します。
その後、Access側で再度、リンクテーブルを作成すると今度は無事に表示されました。
このドライバーは、PosgreSQLのバージョンとのマッピングがあるっぽくて、古いPostgreSQLには古いドライバーを使えってことなのでしょうか。ぼくの環境では下記のドライバー指定でうまくいきました。
(※PostgreSQLのエンコードはすべてEUC-JPです)
以上、備忘録でした。