При организации взаимодействия платформы 1С:Предприятие с внешними базами данных MySQL разработчики часто используют COM-объект ADODB.Connection и системные драйверы ODBC. Однако при попытке установить соединение может возникать исключительная ситуация:
«Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию»
Рассмотрим подробно причины возникновения этой проблемы и разберем по шагам варианты ее решения.
В 64-разрядных операционных системах Windows существуют две независимые подсистемы ODBC:
odbcad32.exe, расположенный в каталоге C:\Windows\System32.odbcad32.exe из каталога C:\Windows\SysWOW64.Если на компьютере установлен 32-разрядный клиент 1С (каталог установки по умолчанию — C:\Program Files (x86)\1cv8\...), он может работать исключительно с 32-разрядными ODBC-драйверами. Если при этом в системе зарегистрирован только 64-битный драйвер MySQL ODBC (или источник настроен только в 64-битном диспетчере), платформа 1С не сможет его обнаружить и выведет ошибку.
Проанализируем способы устранения конфликта разрядности:
C:\Program Files\1cv8\....C:\Windows\SysWOW64\odbcad32.exe).Если разрядность приложения и драйвера совпадает, но ошибка сохраняется, выясним другие возможные причины:
DRIVER={...} должно полностью, символ в символ, совпадать с именем драйвера в диспетчере ODBC. Драйверы MySQL отличаются версиями и кодировкой (например, MySQL ODBC 5.3 Unicode Driver, MySQL ODBC 5.3 ANSI Driver или MySQL ODBC 8.0 Unicode Driver).&НаСервере), разрядность драйвера должна соответствовать разрядности службы кластера 1С, а сам драйвер должен быть установлен непосредственно на сервере приложений.Рассмотрим пример правильной организации подключения к СУБД MySQL с помощью COM-объекта ADODB.Connection и обработки возможной ошибки:
АДОСоединение = Новый COMОбъект("ADODB.Connection");
Если АДОСоединение.State = 0 Тогда // 0 - состояние adStateClosed
SRV = "192.168.1.8"; // Адрес сервера MySQL
DB = "autoshop"; // Имя базы данных MySQL
UID = "root"; // Имя пользователя
PWD = "password"; // Пароль пользователя
PORT = "3306"; // Порт сервера
// Формируем строку подключения с указанием точного имени драйвера
СтрокаПодключения = "DRIVER={MySQL ODBC 5.3 Unicode Driver};"
+ "SERVER=" + SRV + ";"
+ "PORT=" + PORT + ";"
+ "DATABASE=" + DB + ";"
+ "UID=" + UID + ";"
+ "PWD=" + PWD + ";"
+ "Option=3;"; // Дополнительные параметры соединения
Попытка
АДОСоединение.ConnectionString = СтрокаПодключения;
АДОСоединение.Open();
Сообщить("Подключение к MySQL успешно установлено!");
Исключение
АДОСоединение = Неопределено;
Сообщить("Ошибка при подключении к MySQL: " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
Обратите внимание: Для передачи пароля в драйверах MySQL ODBC стандартом является параметр PWD. Также для корректной работы с кодировками рекомендуется передавать системные параметры инициализации, например параметр кодировки CHARSET=utf8mb4 в строке соединения.