2012-02-09 20 views
11

Ho cercato su Google ore.PHP ODBC connect() to Access - disadattamento dell'architettura

Ho letto innumerevoli articoli quali: Is there a Windows 7 ODBC driver for Access?

Ho provato con sia l'amministratore ODBC - e sono riuscito ad aggiungere con successo lì DSN di sistema per entrambi:

  • Microsoft Access Database
  • Microsoft do Access Database

Quando si tenta di connettersi al DB di accesso memorizzato localmente:

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

ottengo il seguente errore (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

sceneggiatura semplice provato a installare i driver di accesso ai più recenti - Aquarius2 è il nome della mia DSN non riesce ancora.

Sono fuori di idee - cosa mi manca?

saluti, Alex

+2

stai usando un dsn a 32 bit o 64 bit? –

risposta

17

si sta tentando di utilizzare un'applicazione a 64 bit con un driver ODBC a 32 bit o viceversa. Guarda ODBC on 64-bit Windows Platforms.

È necessario determinare se l'applicazione PHP è prima a 64 bit oa 32 bit.

Quindi, una volta accertato che è necessario avviare l'amministratore ODBC corretto, ce ne sono 2, uno per 32 bit e uno per 64 bit. L'amministratore ODBC a 64 bit è in Strumenti di amministrazione, il pannello di controllo e quello a 32 bit è in %windir\syswow64\odbcad32.exe.

Dopo aver abbinato l'architettura dell'applicazione all'amministratore ODBC corretto, è necessario creare il DSN di sistema. Se non riesci a trovare il driver MS Access nell'amministratore, dovrai scaricarne uno per tale architettura. Non sono sicuro se c'è un driver ODBC MS Access a 64 bit; se non c'è, dovrai cambiare la tua architettura dell'applicazione.

The article I referenced ha ulteriori informazioni.

+0

Penso di aver già fatto tutto questo ed è chiaro che si tratta di una sorta di disallineamento 32/64 bit, ma non sono sicuro del perché. –

+0

Non so come riformulare la mia risposta per renderla più chiara - mi dispiace. – bohica

+0

L'applicazione utilizza PHP e la sua API odbc_x() - l'esecuzione di phpinfo() sembra dirmi che l'API ODBC è win32. –

4

Un'altra nota: se hai installato il WampServer a 64 bit, installa tutto a 64 bit - Apache, MySQL, PHP. Se vuoi avere un PHP a 32 bit, vai allo PHP downloads page e scegli una delle versioni di "win32". E non dimenticare di cambiare il tuo percorso php quando esegui la tua applicazione! Questo oltre a configurare l'amministratore ODBC a 32 bit - %windir\syswow64\odbcad32.exe - e dovresti essere pronto.

+0

Strana cosa, anche se ho installato una versione a 64 bit di wampServer, la costante PHP_INT_MAX era uguale a 2^31-1, quindi ho pensato che PHP fosse in qualche modo a 32 bit. Scarica ora wampserver a 32 bit e incrocio le dita. – Mchl

+0

Sì. Ha funzionato! Sebbene il passaggio alle versioni di wampserver sia un po 'un PITA. – Mchl