
Хорошо, я работаю с этим впервые, так что простите, если я немного запутан или расплывчат.
У меня есть сервер с Windows Server 2008 Standard без Hyper-v (6.0, сборка 6002). Я запускаю небольшой веб-сайт на этом сервере и использую базу данных Microsoft Access для хранения некоторой информации, поступающей через веб-сайт. Я уверен, что PHP, который я написал для открытия соединения ODBC, правильный, поскольку он работал у меня, когда я создавал этот веб-сайт в тестовой среде на ноутбуке.
Моя текущая проблема сейчас в том, что у меня, похоже, два разных odbcad32.exe, и у одного, похоже, нет драйвера для файла .accdb, а есть только файл .mdb. У другого есть драйвер для обоих.
Первый, о котором я говорю, имеет драйвер под названием «Драйвер Microsoft Access (.mdb)», второй — драйвер под названием «Драйвер Microsoft Access (.mdb, .accdb)». Я получаю доступ к первому odbcad32.exe, перейдя в C:\Windows\SysWOW64\odbcad32.exe, а затем тот, в котором, как мне кажется, есть нужный мне драйвер. Я иду в Панель управления->Администрирование->Источники данных (ODBC) и просто создаю новое подключение на вкладке Системный DNS.
Всякий раз, когда я вношу изменения в тот, к которому я получаю доступ через Панель управления, я не вижу никаких изменений, однако, если я использую файл odbcad32.exe в SysWOW64, я получаю некоторые изменения в ошибках, которые возвращаются ко мне. Главное отличие, которое я заметил, заключается в том, что когда я настраивал соединение ODBC с помощью метода Панели управления, он говорил, что просто не может найти соединение ODBC, но когда я создавал соединение .mdb в SysWOW64 (и указывал на файл .accdb), он говорил
Cannot open database '(unknown)'. It may not be a database that your application recognizes, or the file may be corrupt.
Из-за чего кажется, что именно эта версия odbcad32.exe в SySWOW64 распознается как «правильная». Есть ли способ это исправить?
Я постарался быть максимально подробным, но если я что-то упустил или запутался, дайте мне знать.
решение1
Исполняемый файл в system32 — это 64-битная версия, а копия в syswow64 — это 64-битная версия. Каждый из них работает с различными наборами драйверов в зависимости от архитектуры исполняемого файла, который вы запускаете.
Версия, которую вы хотите запустить, зависит от архитектуры исполняемых файлов, которым необходимо загрузить драйверы.
Чаще всего PHP работает как 32-разрядный процесс для CGI, но вам нужно будет дважды проверить свою среду и убедиться, что установлены соответствующие драйверы.