
好吧,這是我第一次使用這個,所以如果我有點困惑或含糊,請原諒我。
我有一台運行 Windows Server 2008 Standard 的伺服器,不含 Hyper-v(6.0,Build 6002)。我正在該伺服器上運行一個小型網站,並使用 Microsoft Access 資料庫來儲存透過該網站傳入的一些資訊。我確信我編寫的用於打開 ODBC 連接的 PHP 是正確的,因為當我在筆記型電腦上的測試環境中建立此網站時,它對我有用。
我現在的問題是,我似乎有兩個不同的 odbcad32.exe,其中一個似乎沒有 .accdb 檔案的驅動程序,而只有 .mdb 檔案。另一個有兩個司機。
我所說的第一個驅動程式有一個名為“Driver do Microsoft Access (.mdb)”的驅動程序,第二個驅動程式有一個名為“Microsoft Access Driver (.mdb, .accdb)”的驅動程式.我透過前往C:\Windows\SysWOW64\odbcad32.exe 存取第一個odbcad32.exe,然後存取似乎具有我需要的驅動程式的那個,我轉到控制面板->管理工具->資料來源(ODBC)和只需在“系統 DNS”選項卡中創建一個新連接即可。
每當我對透過控制面板存取的檔案進行更改時,我都看不到任何變化,但是如果我在 SysWOW64 中使用 odbcad32.exe 文件,我確實會在返回給我的錯誤中得到一些變化。我注意到的主要區別是,當我使用控制面板方法設定 ODBC 連接時,它說它根本找不到 ODBC 連接,但是當我在 SysWOW64 中建立 .mdb 連接(並將其指向 . accdb 文件)它說
Cannot open database '(unknown)'. It may not be a database that your application recognizes, or the file may be corrupt.
這使得 SySWOW64 中的 odbcad32.exe 版本被認為是「正確的」版本。有沒有辦法解決這問題?
我已盡力做到盡可能徹底,但如果我感到困惑或遺漏了任何內容,請告訴我。
答案1
system32 中的可執行檔是 64 位元版本,而 syswow64 中的副本是 64 位元版本。每個驅動程式都根據您正在執行的可執行檔的體系結構使用不同的驅動程式集。
您要執行的版本取決於需要載入驅動程式的可執行檔的體系結構。
大多數情況下,PHP 會作為 CGI 的 32 位元進程運行,但您需要仔細檢查您的環境並確保安裝了適當的驅動程式。