Смущен созданием соединения ODBC, по-видимому, у меня есть два отдельных файла odbcad32.exe?
Хорошо, я впервые работаю с этим, так что простите меня, если я немного запутался или расплывчат.
У меня есть сервер с 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) и просто создайте новое соединение на вкладке System DNS.
Всякий раз, когда я изменяю тот, к которому я получаю доступ через Панель управления, я не вижу никаких изменений, однако, если я использую файл odbcad32.exe в SysWOW64, я получаю некоторые изменения в ошибках, которые мне возвращаются. Основное отличие, которое я заметил, заключается в том, что, когда я устанавливал соединение ODBC с помощью метода панели управления, он сказал, что просто не может найти соединение ODBC, но когда я установил соединение.mdb в соединении SysWOW64 (и указал на a. файл 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, но вам нужно будет дважды проверить вашу среду и убедиться, что установлены соответствующие драйверы.