お知らせ

Windows8とPostgresqlODBCドライバ

pgadmin

PostgresqlのODBCドライバをWindows8 64bit版へ導入する際に直面した問題について投稿します。

とはいえ、完全な解決に至っていないので、PostgresqlをODBCで使う場合は、Windows8へのアップグレードは待った方がよさそうです。

PsqlODBCドライバでODBC Administratorがクラッシュ

PostgresSQLのODBCドライバ64bit版をWindows8に導入しようと考える場合、公式サイトの最新版をダウンロードするのが当たり前の手順となると思います。

http://www.postgresql.org/ftp/odbc/versions/

postgreodbcdl1

ここで最新バージョンであるmsiパッケージ

psqlodbc_09_01_0200-x64.zip

をダウンロードし、展開し、インストールを行います。

ここでインストールしたODBCドライバをWindows8のODBCデータソースアドミニストレーター(64bit)で登録してみます。

odbcadmin1

odbcadmin2

ここで完了をクリックすると、

odbc64bitcrash2

ODBCデータソースアドミニストレーターがクラッシュします。

32bit版ODBCドライバの導入

postgreodbcdl2

32bit版のODBCドライバであれば、もう一つ新しいバージョンがあります。

psqlodbc_09_01_0200-1.zip

これを展開し、再びインストールします。

odbcadmin6

コントロールパネルー管理ツールからODBCデータソース(32ビット)を実行します。

odbcadmin7

ここでは64bitとついていないバージョンを追加することができます。

データベースの接続を入力すると、無事postgresqlに接続することができました。

odbcadmin8

odbcadmin9

問題点

Windows8の検索からODBCで検索すると、64bit版のODBCデータソースアドミニストレータにしかたどり着けません。

search-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データソースを呼び出そうとすると、

odbcunmatch

「 ODBC–呼び出しが失敗しました。

指定されたDSNには、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています(#0) 」

このようなエラーメッセージが表示され、それ以上どうすることもできなくなってしまいます。

Windows 8(64bit)+ACCESS2013(64bit)+PostgresqlODBCという組み合わせで、この記事が書かれている現時点で、動作させるための正解はない、といえそうです。

ODBCドライバを介さずに接続できれば、起こらない問題ですが、ODBCで他のデータベースに接続する形のACCESSデータベースや、EXCELシート、その他ツールなどは、導入前に注意が必要です。

これはODBCドライバとアプリケーションのアーキテクチャの不整合の話ですので、postgresqlに限った話ではありませんが、新しいOSの導入の際には、アプリケーションも含め、慎重に選択することが大事です。

すべて32bitを選んでおいた方が、無難に進む事例もあると実感しました。