#python #pandas #ms-access #odbc
#База данных #odbc
Вопрос:
При попытке создать программу в Windows, которая подключается к базе данных через ODBC, я получил следующую ошибку:
[Microsoft] [Диспетчер драйверов ODBC] Имя источника данных не найдено, и драйвер по умолчанию не указан.
Я уверен, что мой код правильный. Он даже работал на другом компьютере.
Почему я получаю эту ошибку? И как мне это исправить?
Ответ №1:
Что вызывает эту ошибку?
Сообщение об ошибке сообщает вам, проще говоря, что диспетчер драйверов ODBC не смог найти драйвер, указанный вами в строке подключения или DSN.
Это может иметь 3 общие причины:
- Драйвер, который вы пытались использовать, не установлен в вашей системе
- Драйвер установлен, однако он не соответствует разрядности кода, который вы запускаете
- Вы допустили ошибку при вводе имени драйвера
Как мне проверить, какие драйверы установлены в моей системе?
Вы можете проверить драйверы, установленные в вашей системе, обратившись к администратору источника данных ODBC. Чтобы открыть его, нажмите ⊞ Win Rи введите: odbcad32.exe
. Затем проверьте на вкладке Драйверы для установленных драйверов. В столбце Name указано точное имя, которое вы должны использовать в строке подключения или DSN.
Если вы используете 64-разрядную Windows, в ней перечислены только 64-разрядные драйверы, установленные в вашей системе. Чтобы узнать, какие 32-разрядные драйверы установлены, нажмите ⊞ Win Rи введите: C:WindowsSysWOW64odbcad32.exe
и снова перейдите на вкладку Драйверы.
Драйвер установлен, но может быть неправильная разрядность, что мне делать?
Тогда у вас есть два варианта: либо настроить разрядность, в которой работает ваша программа, либо установить драйвер с другой разрядностью.
Некоторые драйверы, установленные по умолчанию в Windows, имеют только 32-разрядный вариант. Они не могут использоваться с 64-разрядными программами.
Обычно вы можете определить, с какой разрядностью выполняется программа в диспетчере задач. В Windows 10 ко всем 32-разрядным программам добавляется (32-разрядный) к их имени. Если этого нет, вы, вероятно, используете 64-разрядную программу, а большинство современных языков программирования и сред по умолчанию работают на 64-разрядной версии, но позволяют переключиться на 32-разрядную. Однако особенности для разных языков программирования выходят за рамки этого вопроса.
Как я могу убедиться, что я не ошибся в имени драйвера?
Строка подключения ODBC выглядит следующим образом:
DRIVER={DriverName};ParameterName1=ParameterValue1;ParameterNameN=ParameterValueN;
Часть имени драйвера должна быть разделена фигурными скобками, если она может содержать специальные символы, и должна точно соответствовать имени установленного драйвера, как указано в администраторе источника данных ODBC, включая пробелы и типографские символы, но исключая заглавные буквы.
Обратите внимание, что для развернутого кода драйвер должен присутствовать на компьютере / сервере, на котором выполняется код.
У меня нет драйвера или у меня неправильная разрядность, где мне взять правильный?
Это зависит от того, какой драйвер вы хотите использовать.
Список распространенных драйверов с местами загрузки (все 32-разрядные и 64-разрядные по одному и тому же URL):
- Драйвер Microsoft ODBC 17 для SQL Server
- Драйвер базы данных Microsoft Access, который является частью компонента Microsoft Access Database Engine. Обратите внимание, что одновременная установка 32-разрядных и 64-разрядных драйверов Access ODBC не поддерживается.
- Соединитель MySQL ODBC от Oracle
- Драйвер ODBC SQLite с открытым исходным кодом от Кристиана Вернера (неофициальный)
- psqlODBC, официальный драйвер PostgreSQL
Если драйвер, который вы хотите использовать, отсутствует в списке, его местоположение обычно легко найти с помощью Google.