和歌山のプログラミング・システム開発ならシステムキューブ
PostgresqlのODBCドライバをWindows8 64bit版へ導入する際に直面した問題について投稿します。
とはいえ、完全な解決に至っていないので、PostgresqlをODBCで使う場合は、Windows8へのアップグレードは待った方がよさそうです。
PostgresSQLのODBCドライバ64bit版をWindows8に導入しようと考える場合、公式サイトの最新版をダウンロードするのが当たり前の手順となると思います。
http://www.postgresql.org/ftp/odbc/versions/
ここで最新バージョンであるmsiパッケージ
をダウンロードし、展開し、インストールを行います。
ここでインストールしたODBCドライバをWindows8のODBCデータソースアドミニストレーター(64bit)で登録してみます。
ここで完了をクリックすると、
ODBCデータソースアドミニストレーターがクラッシュします。
32bit版のODBCドライバであれば、もう一つ新しいバージョンがあります。
これを展開し、再びインストールします。
コントロールパネルー管理ツールからODBCデータソース(32ビット)を実行します。
ここでは64bitとついていないバージョンを追加することができます。
データベースの接続を入力すると、無事postgresqlに接続することができました。
Windows8の検索からODBCで検索すると、64bit版のODBCデータソースアドミニストレータにしかたどり着けません。
32bitのODBCアドミニストレータはc:\windows\SysWOW64\odbcad32.exeにあります。
64bitのODBCアドミニストレータはc:\windows\system32\odbcad32.exeがそれになります。
管理ツールから選べますので、これを利用してください。
もう一点問題点というべきなのかはわかりませんが、64bitアプリケーションから32bitODBCドライバは呼び出すことができません。
64bitアプリケーションから32bitドライバを呼び出せないのは、当然なことなのですが、OfficeからODBCでデータソースにつなぐ場合など、Office自体が32bit版か、64bit版かで、この辺が決定的に変わってしまいます。
ACCESS2013(64bit)からこの32bitのPostgresqlのODBCデータソースを呼び出そうとすると、
「 ODBC–呼び出しが失敗しました。
指定されたDSNには、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています(#0) 」
このようなエラーメッセージが表示され、それ以上どうすることもできなくなってしまいます。
Windows 8(64bit)+ACCESS2013(64bit)+PostgresqlODBCという組み合わせで、この記事が書かれている現時点で、動作させるための正解はない、といえそうです。
ODBCドライバを介さずに接続できれば、起こらない問題ですが、ODBCで他のデータベースに接続する形のACCESSデータベースや、EXCELシート、その他ツールなどは、導入前に注意が必要です。
これはODBCドライバとアプリケーションのアーキテクチャの不整合の話ですので、postgresqlに限った話ではありませんが、新しいOSの導入の際には、アプリケーションも含め、慎重に選択することが大事です。
すべて32bitを選んでおいた方が、無難に進む事例もあると実感しました。