Error [IM002] [Microsoft][ODBC Driver Manager] "Data source name not found and no default driver specified" и кому доверять?
Пересказ статьи Rayis Imayev. Error [IM002] [Microsoft][ODBC Driver Manager] "Data source name not found and no default driver specified" and who do you trust?
Это очень короткий пост, просто чтобы напомнить себе, но, если вы когда-либо пытались подключиться к базе данных PostgreSQL с помощью интерфейса ODBC (знаю, что это уже звучит, как очень интересный вызов), то могли столкнуться с таким сообщением об ошибке: “ERROR [IM002] [Microsoft][ODBC Driver Manager] Источник данных не найден и не указан драйвер по умолчанию.”
Я допускаю, что мой поиск онлайн этой ошибки сразу показал ресурсы Microsoft и Stackoverflow, которые только смутили меня и не помогли решить проблему с подключением к ресурсу PostgreSQL через ODBC:
- https://docs.microsoft.com/en-us/answers/questions/227987/34error-im002-microsoftodbc-driver-manager-data-so.html
- https://stackoverflow.com/questions/17115632/microsoftodbc-driver-manager-data-source-name-not-found-and-no-default-drive
Microsoft в своей документации на SSIS дает очень хорошее объяснение, как подключиться к источнику данных PostgreSQL, и даже приводит пример строки подключения с драйвером PostrgreSQL ODBC.
Driver={PostgreSQL ODBC Driver(UNICODE)};Server=<сервер>;Port=<порт>;Database=<база данных>;UID=<ид пользователя>;PWD=<пароль>
Мои попытки воспользоваться этим примером не привели к успеху, я по-прежнему получаю свое сообщение об ошибке: “data source name not found”.
Смущал один момент, и я захотел его проверить. Если посмотреть на список 64- или 32-битных подключений ODBC PostgreSQL, которые я сделал, обнаружилось, что они не согласуются с тем, что я читал в технической статье Microsoft.
Мой список драйверов был другим по сравнению с этой технической статьей, и изменить имена этих драйверов, чтобы они соответствовали “PostgreSQL ODBC Driver(UNICODE)”, было не в моих силах.
Тогда я решил изменить мою строку подключения на такой формат “Driver={PostgreSQL Unicode};Server=<сервер>;Port=<порт>;Database=<база данных>;UID=<ИД пользователя>;PWD=<пароль>” в соответствии со списком драйверов, которые я имел. Я тестировал её с обоими 32- и 64-битными драйверами. И только тогда все заработало, и я смог подключиться к моему экземпляру PostgreSQL. Это не означает, что такое соглашение об именовании будет работать при всех обстоятельствах: драйвер ODBC может быть обновлен до новой версии, или другие факторы могут изменить успешный путь подключения к данным. Это изменчивый мир!
Я все время вспоминаю рекомендации Илона Маска делать требования к бизнесу менее тупыми, поскольку может найтись умный человек, который предоставит вам требования, которые вы не сможете опровергнуть.
Не поймите меня неправильно, я никого не виню. Это просто доказательство того, что доверять - это нормально, но стоит все же проверять и проверять. Еще один урок для меня и не новый.
Обратные ссылки
Автор не разрешил комментировать эту запись
Комментарии
Показывать комментарии Как список | Древовидной структурой