在同一台机器上安装 32 位和 64 位 Informix 驱动程序

在同一台机器上安装 32 位和 64 位 Informix 驱动程序

当前正在尝试设置一个可以处理 32 位和 64 位 ODBC Informix 驱动程序的开发环境。

我在网上找不到任何指南或教程,但我确实找到了一些可以解决问题的零碎信息。我只是想要多一点建议,以确保我走在正确的道路上。

驱动程序版本

版本 3.70.TC3,Windows(32 位)

版本 3.70.FC3,Windows x64

来源

我似乎找不到版本3.70.TC3或者3.70.FC3,但我发现3.70.TC73.70.FC7直接从 IBM 网站获取,我认为这些只是稍微更新的版本。

Informix 驱动程序安装

驱动程序安装在以下位置(基于注册表项)

  • 32 位:C:\Program Files (x86)\IBM\Informix\Client-SDK\
  • 64 位:C:\Program Files\IBM\Informix\Client-SDK\

注册表项

据我所知,驱动程序的注册表项位于:

  • 32 位:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI
  • 64 位:HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI

Driver这实际上列出了所有数据源及其连接详细信息。两个位置都具有相同数量的数据源,这些数据源具有相同的名称和相同的键/值对,但指向其各自驱动程序位置的键除外;C:\Program Files\C:\Program Files (x86)\

ODBC 管理员

32 位 ODBC 管理器位于 %systemdrive%/Windows/系统WoW64/odbcad32.exe

与直觉相反,64 位 ODBC 管理器位于 %systemdrive%/Windows/System32/odbcad32.exe

来源

数据库连接配置文件

ODBC.INI文件位于C:\Windows\其中,该文件的内容列出了与 ODBC 管理器中显示的相同的数据源,并包括每个数据源的 32 位驱动程序的键/值对;Driver32=C:\Program Files\IBM\Informix\Client-SDK\bin\iclit09b.dll

现在有趣的是,虽然使用了键Driver32,但值指向的是C:\Program Files\路径而不是路径C:\Program Files (x86)\,从而将其Driver32与 64 位驱动程序相关联。

我发现以下内容来解释这种不规则现象。

WOW64 注册表重定向器会拦截对注册表某些部分的调用,并将其重定向到注册表的另一部分。注册表重定向会影响 HKEY_LOCAL_MACHINE\SOFTWARE 键。32 位应用程序对此项进行的注册表调用被重定向至 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node。因此,例如,当 32 位应用程序调用 SQLDataSources 时,生成的注册表调用将从 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI 重定向到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI,并且返回的唯一系统数据源是 32 位 ODBC 驱动程序的数据源。

简而言之,连接到 64 位 ODBC 驱动程序的 32 位应用程序将根据注册表项自动重定向到 32 位驱动程序,而 64 位应用程序则不需要这样的重定向。

如果 32 位应用程序尝试连接到 64 位 ODBC 驱动程序的有效用户数据源,则如果安装了 32 位版本的驱动程序,则连接将会成功。否则,连接将失败并出现“架构不匹配”错误。例如,Microsoft 的 SQL Server ODBC 驱动程序会同时安装64 位 Windows 平台上有一个 64 位库 (%WINDIR%\System32\sqlsrv32.dll) 和一个 32 位库 (%WINDIR%\SysWOW64\sqlsrv32.dll)。

对于 Informix 来说,必须单独安装每种架构的驱动程序。

问题

该文件的重要性是什么ODBC.INI?我可以简单地修改Driver32密钥Driver64或者将两者结合起来吗?

执行 32 位 ODBC 管理器并打开数据源时,我可以修改连接设置,但是执行 64 位版本时,我收到以下错误。

64 位 ODBC 管理器 - 错误 193

如何将系统当前的 ODBC 管理器更改为 64 位版本以避免此错误?

答案1

问题是我最初安装的是 3.50 版本。此版本不再受支持,并且没有 64 位版本。

解决方案是安装最新的 4.1 驱动程序。

相关内容