O problema era que eu tinha instalado a versão 3.50 inicialmente. Esta versão não é mais suportada e também não possui uma contraparte de 64 bits.
A resolução foi instalar os drivers mais recentes do 4.1.
Atualmente tentando configurar um ambiente de desenvolvimento que possa manipular os drivers ODBC Informix de 32 bits e 64 bits.
Não tive sucesso em encontrar qualquer tipo de guia ou percorrer on-line, mas encontrei fragmentos que poderiam levar à solução. Gostaria apenas de um pouco mais de conselhos para garantir que estou no caminho correto.
Versões do driver
Version 3.70.TC3, Windows (32 bit)
Version 3.70.FC3, Windows x64
Não consigo encontrar as versões 3.70.TC3 ou 3.70.FC3 , mas encontrei 3.70.TC7 e 3.70.FC7 diretamente do site da IBM, que, presumo, são apenas versões ligeiramente atualizadas.
Instalações do driver Informix
Os drivers são instalados nos seguintes locais (com base nas entradas do Registro)
Entradas do Registro
Pelo que vejo, as entradas de registro para os drivers estão localizadas em:
Essencialmente, lista todas as fontes de dados e seus detalhes de conexão. Ambos os locais têm o mesmo número de origens de dados com os mesmos nomes e os mesmos pares de chave / valor, com exceção da chave Driver
que aponta para o respectivo local do driver; C:\Program Files\
ou C:\Program Files (x86)\
.
Administrador ODBC
The 32-bit ODBC Administrator is found at %systemdrive%/Windows/SysWoW64/odbcad32.exe
Counterintuitively, the 64-bit ODBC Administrator is found at %systemdrive%/Windows/System32/odbcad32.exe
ODBC.INI
O arquivo ODBC.INI
está localizado em C:\Windows\
, onde o conteúdo desse arquivo lista as mesmas fontes de dados exibidas no Administrador ODBC e inclui o par chave / valor dos drivers de 32 bits para cada um desses dados fontes; Driver32=C:\Program Files\IBM\Informix\Client-SDK\bin\iclit09b.dll
.
Agora, o interessante aqui é que, embora a chave Driver32
seja usada, o valor aponta para o caminho C:\Program Files\
em oposição ao caminho C:\Program Files (x86)\
, associando o Driver32
aos drivers de 64 bits. / p>
Encontrei a seguinte página para explicar essa irregularidade.
The WOW64 registry redirector intercepts calls made to certain portions of the registry and redirects them to another portion of the registry. Registry redirection affects the HKEY_LOCAL_MACHINE\SOFTWARE key. Registry calls made to this key by 32-bit applications are redirected to HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node. So, for example, when a 32-bit application calls SQLDataSources, the resultant registry call is redirected from HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI to HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI, and the only system data sources that are returned are ones for 32-bit ODBC drivers.
Simplificando, um aplicativo de 32 bits que se conecta aos drivers ODBC de 64 bits será redirecionado automaticamente para os drivers de 32 bits com base nas entradas do Registro, enquanto um aplicativo de 64 bits não precisará desse redirecionamento.
If a 32-bit application attempts to connect to a valid user data source for a 64-bit ODBC driver, the connection will succeed if a 32-bit version of the driver is installed. Otherwise, the connection will fail with the "architecture mismatch" error. For example, Microsoft’s SQL Server ODBC driver installs both a 64-bit library (%WINDIR%\System32\sqlsrv32.dll) and a 32-bit library (%WINDIR%\SysWOW64\sqlsrv32.dll) on 64-bit Windows platforms.
No caso do Informix, o driver de cada arquitetura DEVE ser instalado separadamente.
Qual é a importância do arquivo ODBC.INI
, e posso simplesmente modificar a chave Driver32
para Driver64
ou talvez ter ambos em conjunto?
Ao executar o Administrador de ODBC de 32 bits e abrir uma fonte de dados, posso modificar as configurações de conexão, mas ao executar a versão de 64 bits, recebo o seguinte erro.
Como posso alterar o Administrador ODBC atual do sistema para a versão de 64 bits para evitar esse erro?