2012-02-09 8 views
11

He buscado en Google por horas ahora.PHP ODBC connect() to Access - incompatibilidad de arquitectura

He leído innumerables artículos tales como: Is there a Windows 7 ODBC driver for Access?

He intentado usar tanto el administrador de ODBC - y han conseguido añadir con éxito allí DSN de sistema para ambos: Base de datos

  • Microsoft Access
  • Microsoft do Access Database

Cuando intento conectarme a Access DB almacenado localmente:

odbc_connect('Aquarius2', '', ''); 

me sale el siguiente error (s):

odbc_connect(): SQL error: [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application, SQL state IM014 in SQLConnect in C:\export\export.php on line 3

Simple script intentó instalar los últimos controladores de acceso - Aquarius2 es el nombre de mi sigue sin DSN.

Me quedo sin ideas, ¿qué me estoy perdiendo?

Saludos, Alex

+2

¿Está utilizando una dsn de 32 bits o 64 bits? –

Respuesta

17

que está intentando utilizar una aplicación de 64 bits con un controlador ODBC de 32 bits o viceversa. Mira ODBC on 64-bit Windows Platforms.

Debe determinar si su aplicación PHP es primero de 64 bits o 32 bits.

Luego, una vez que haya determinado que necesita iniciar el administrador ODBC correcto, hay 2 de ellos, uno para 32 bits y otro para 64 bits. El administrador de ODBC de 64 bits se encuentra en Herramientas administrativas, panel de control y el de 32 bits está en %windir\syswow64\odbcad32.exe.

Una vez que haya hecho coincidir la arquitectura de su aplicación con el administrador ODBC correcto, debe crear el DSN del sistema. Si no puede encontrar el controlador de MS Access en el administrador, deberá descargar uno para esa arquitectura. No estoy seguro de si hay un controlador MS Access ODBC de 64 bits; si no lo hay, tendrás que cambiar la arquitectura de tu aplicación.

The article I referenced tiene más información.

+0

Creo que ya hice todo eso y está claro que es una especie de desajuste de 32/64 bit, pero no estoy seguro de por qué. –

+0

No sé cómo reformular mi respuesta para que quede más clara, lo siento. – bohica

+0

La aplicación usa PHP y es odbc_x() API - al ejecutar phpinfo() aparece decirme que la API de ODBC es win32. –

4

Otra nota: si instaló el WampServer de 64 bits, instala todo de 64 bits: Apache, MySQL, PHP. Si quieres tener un PHP de 32 bits, ve al PHP downloads page y elige uno de los lanzamientos de 'win32'. ¡Y no olvide cambiar su ruta php cuando ejecute su aplicación! Esto además de configurar el administrador ODBC de 32 bits - %windir\syswow64\odbcad32.exe - y debería estar listo para empezar.

+0

Lo extraño es que, aunque instalé una versión de 64 bits de wampServer, la constante PHP_INT_MAX era igual a 2^31-1, así que pensé que PHP tenía 32 bits de alguna manera. Descargando 32bit wampserver ahora y manteniendo mi dedo cruzado. – Mchl

+0

Sí. ¡Funcionó! Aunque cambiar las versiones de Wampserver es un poco de un PITA. – Mchl

Cuestiones relacionadas