22 agosto 2011

ODBC en 64 bits: architecture mismatch

Cada tanto me toca volver al ruedo con el blog y para celebrar el feriado acá vamos con un problemita que tuve luego de mis primeros tiempos en Windows 7 64 bits.

La situación: luego de tener instalado un Apache+PHP de 32 bits (en este Windows de 64 bits) fui a configurar un ODBC para obtener unos datos tal como lo tenía configurado antes en un Windows de 32 bits. Configuré el ODBC y al intentar acceder desde PHP a la base de datos (el realidad el nombre "base de datos" le queda un poco grande porque se trataba de un simple Access, jaja) me apareció un no muy simpático error que decía más o menos lo siguiente:
The specified DSN contains an architecture mismatch between the Driver and Application, SQL state IM014 in SQLConnect in...

Inmediatamente a googlear un poco y así fue que encontré a un colega italiano que contó sus aventuras (por suerte en inglés, porque si era en italian necesitaba un google translator).

Así fue que me enteré que en Windows 7 64 bits existen 2 ODBCs, uno para 32 y otro para 64 bits. Las aplicaciones de 64 bits ven las entradas de ODBC de 32 y 64 bits, pero las aplicaciones de 32 bits sólo ven las entradas de ODBC de 32 bits. El detalle es que en mis "Herramientas Administrativas" sólo existía un ODBC, y justamente correspondía al de 64 bits. Así fue que, tal como dice el colega Roberto, busqué el archivo C:\Windows\SysWOW64\odbcad32.exe, el cual corresponde a la configuración de ODBC para 32 bits. Luego configuré ahí la "base de datos" a la que quería acceder y la aplicación PHP funcionó normalmente.

Dicho sea de paso y para cerrar el post, agregué una entrada (un acceso directo) a las "Herramientas Administrativas" para ver también el ODBC de 32 bits, apuntando al archivo indicado anteriormente.

2 comentarios:

Jorge Rojas Álvarez dijo...

Muchas gracias por este conciso artículo. Administro sitios web PHP hospedados en servidores Windows 2008 x64 y con sus sugerencias pude resolver el mismo problema.

Anónimo dijo...

Gracias!!!