2012-02-09 8 views
11

Mam googled godzinami teraz.PHP ODBC connect() na dostęp - architektura niedopasowanie

Czytałem wiele artykułów takich jak: Is there a Windows 7 ODBC driver for Access?

Próbowałem, używając zarówno Administrator ODBC - i udało się z powodzeniem dodać tam Systemowe DSN dla obu:

  • Microsoft Access Database
  • Microsoft do Access Database

Gdy próbuję połączyć się z Access DB przechowywanym lokalnie:

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

otrzymuję następujący błąd (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

Prosty skrypt próbował zainstalowaniu najnowszych sterowników dostępu - Aquarius2 to nazwa mojego DSN nadal kończy się niepowodzeniem.

Brakuje mi pomysłów - czego mi brakuje?

Pozdrawiam, Alex

+2

Czy używasz 32-bitowego lub 64-bitowego urządzenia DSN? –

Odpowiedz

17

Próbujesz użyć aplikacji 64-bitowy z 32 bitowym sterownika ODBC lub odwrotnie. Spójrz na ODBC on 64-bit Windows Platforms.

Musisz ustalić, czy twoja aplikacja PHP jest 64-bitowa czy 32-bitowa.

Następnie po upewnieniu się, że trzeba uruchomić właściwego administratora ODBC - są 2 z nich, jeden dla 32 bitów i jeden dla 64 bitów. 64-bitowy administrator ODBC znajduje się w narzędziach administracyjnych, panelu sterowania, a 32-bitowy w %windir\syswow64\odbcad32.exe.

Po dopasowaniu architektury aplikacji do odpowiedniego administratora ODBC należy utworzyć systemową nazwę DSN. Jeśli nie możesz znaleźć sterownika MS Access w administratorze, musisz pobrać go dla tej architektury. Nie jestem pewien, czy istnieje 64-bitowy sterownik ODBC MS Access; jeśli nie, musisz zmienić architekturę aplikacji.

The article I referenced ma więcej informacji.

+0

Myślę, że już zrobiłem to wszystko i jest jasne, że jest to pewnego rodzaju niedopasowanie 32/64 bitowe, ale nie jestem pewien dlaczego. –

+0

Nie wiem, jak zmienić moją odpowiedź, aby było jaśniejsze - przepraszam. – bohica

+0

Aplikacja korzysta z PHP i jego funkcji odbc_x() - działająca funkcja phpinfo() informuje mnie, że API ODBC to win32. –

4

Jeszcze jedna uwaga: jeśli zainstalowałeś 64-bitowy WampServer, instaluje on 64-bitowe wszystko - Apache, MySQL, PHP. Jeśli chcesz mieć 32-bitowy PHP, przejdź do PHP downloads page i wybierz jeden z wydań "win32". I nie zapomnij zmienić ścieżki php po uruchomieniu aplikacji! To plus ustawienia 32-bitowego administratora ODBC - %windir\syswow64\odbcad32.exe - i powinieneś być dobry, aby przejść.

+0

Dziwne, mimo że zainstalowałem 64-bitową wersję wampServer, stała PHP_INT_MAX była równa 2^31-1, więc pomyślałem, że PHP jest jakoś 32-bitowy. Pobieranie 32-bitowego wampsera i trzymanie kciuka. – Mchl

+0

Tak. Zadziałało! Chociaż przełączanie wersji wampserver jest trochę PITA. – Mchl