在Win7 x64下安装最新版的PostgreSQL 9.x 后,从其官网下载最新的 ODBC驱动,分为普通的32位和64位版本,正常安装后,从已安装软件列表里可以看到两个版本的驱动都已经正确显示出来。但是在管理工具下ODBC数据源界面里只能选择64位的PostgreSQL驱动,32位竟然没有。如此一来,一些32位的应用软件就没法利用ODBC链接到数据库了(尝试选取地话,会报告选取的数据源(64位)和应用程序的系统构架(32位)不一致而失败)。
一开始以为在ODBC数据源无法选择32位驱动是和安装驱动的顺序有关,或者32位和64位驱动互相冲突。卸卸装装反复几次,问题依旧。后来查阅psqlodbc项目组的FAQ才找到解决办法:
从cmd运行 %SystemRoot%\syswow64\odbcad32.exe来配置32位的PostgreSQL ODBC数据源。odbcad32.exe运行界面和管理工具下ODBC数据源配置界面类似,但是是用来管理32位驱动的。Win7 x64管理工具下ODBC数据源配置程序(%SystemRoot%\system32\odbcad32.exe)实际上是64位的驱动管理。
官方的解释为:
Contributed by Mark Wood (mw@mcwood.co.uk)
Though you can install 32 bit ODBC drivers on Win X64 as usual, you can't configure 32-bit DSNs via oridinary control panel or ODBC datasource administrator.
How to configure 32 bit ODBC drivers on Win x64
Configure ODBC DSN from %SystemRoot%\syswow64\odbcad32.exe. Click
Start->Run
Enter: %SystemRoot%\syswow64\odbcad32.exe
Hit return
This looks the same as the driver manager you might run from the control panel, but is for managing 32bit drivers. If you run odbcad32.exe from the System32 directory, you are actually running the 64bit driver manager.
详情请参考psqlodbc项目组的FAQ:http://psqlodbc.projects.postgresql.org/faq.html#6.8
另:对于MySQL的ODBC驱动,同时安装32位和64位后,在已安装软件列表里出现的两个一模一样名字的条目。通过管理工具下ODBC数据源配置程序配置的64位驱动的数据源在32位的应用软件里是没有问题的 - 不知道MySQL是怎么做的,可能是在创建64位驱动的数据源的同时自动创建一个32为数据源。