Windows8とPostgresqlODBCドライバ
Windows8とPostgresqlODBCドライバ
PostgresqlのODBCドライバをWindows8 64bit版へ導入する際に直面した問題について投稿します。 とはいえ、完全な解決に至っていないので、PostgresqlをODBCで使う場合は、Windows8へのアップグレードは待った方がよさそうです。 PsqlODBCドライバでODBC Administratorがクラッシュ PostgresSQLのODBCドライバ64bit版をWindows8に導入しようと考える場合、公式サイトの最新版をダウンロードするのが当たり前の手順となると思います。 http://www.postgresql.org/ftp/odbc/versions/ ここで最新バージョンであるmsiパッケージ psqlodbc_09_01_0200-x64.zip をダウンロードし、展開し、インストールを行います。 ここでインストールしたODBCドライバをWindows8のODBCデータソースアドミニストレーター(64bit)で登録してみます。 ここで完了をクリックすると、 ODBCデータソースアドミニストレーターがクラッシュします。 32bit版ODBCドライバの導入 32bit版のODBCドライバであれば、もう一つ新しいバージョンがあります。 psqlodbc_09_01_0200-1.zip これを展開し、再びインストールします。 コントロールパネルー管理ツールから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を選んでおいた方が、無難に進む事例もあると実感しました。