Как исправить ошибку ODBC:SQLSTATE HY000 (код 2003) при подключении к MySQL во внешних источниках данных 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При настройке таблиц внешних источников данных в платформе 1С разработчики нередко сталкиваются с ошибкой ODBC:SQLSTATE HY000 с кодом 2003. Данная ошибка генерируется драйвером MySQL и означает CR_CONN_HOST_ERROR (Can't connect to MySQL server). Это говорит о том, что платформа 1С даже не дошла до проверки учетных данных (логина и пароля), так как не смогла установить сетевое TCP-соединение с удаленным сервером баз данных.

Разберем по шагам причины возникновения этой неполадки и методы ее устранения.

Шаг 1. Локализация проблемы с помощью сторонних инструментов

Прежде чем менять настройки в конфигураторе 1С, выясним, доступен ли удаленный сервер в принципе с рабочего места или сервера 1С. Для этого рекомендуется использовать автономные клиенты или системные утилиты:

  1. Проверка через специализированные клиенты СУБД: запустим портативную версию HeidiSQL или DBeaver. Если сторонний клиент также не может подключиться к базе, проблема гарантированно лежит на уровне сети, фаервола или конфигурации самого MySQL.
  2. Проверка сетевого порта через командную строку: по умолчанию MySQL ожидает подключений на порту 3306. Проверим доступность сокета с помощью PowerShell:

Test-NetConnection -ComputerName 94.249.146.189 -Port 3306

Если результат проверки возвращает TcpTestSucceeded : False, соединение блокируется сетевыми экранами либо служба СУБД отключена.

Шаг 2. Проверка сетевых ограничений и настроек сервера MySQL

Проанализируем конфигурацию сервера, к которому выполняется подключение:

  1. Директива bind-address: в конфигурационном файле MySQL (my.cnf или my.ini) параметр bind-address часто по умолчанию равен 127.0.0.1. Это запрещает любые внешние подключения. Для приема внешних соединений необходимо указать 0.0.0.0 или конкретный сетевой IP-адрес интерфейса.
  2. Брандмауэр и хостинг: входящие подключения к порту 3306 должны быть разрешены в файрволе сервера (iptables, ufw, Windows Firewall) и на уровне сетевого провайдера/хостинга.
  3. Права пользователя MySQL: убедимся, что учетная запись создана с разрешением подключаться с удаленного IP (например, 'users'@'%' или 'users'@'ip_адрес_1С'), а не только для 'localhost'.

Шаг 3. Выбор версии ODBC-драйвера и соответствие разрядности

В строках подключения часто фигурирует устаревший драйвер MySQL ODBC 3.51 Driver. Он не поддерживает современные методы шифрования паролей и актуальные версии протокола MySQL 8.x. Рекомендуется установить драйверы серии MySQL Connector/ODBC 8.0 (или 5.3) в варианте Unicode Driver.

Критически важный момент — разрядность:

  1. Если выборка таблиц и подключение осуществляются в 32-разрядном клиенте или Конфигураторе 1С, в операционной системе должен быть установлен 32-битный ODBC-драйвер (настройка через C:\Windows\SysWOW64\odbcad32.exe).
  2. Если код выполняется на стороне сервера 1С («НаСервере») под управлением 64-разрядного кластера «1С:Предприятие», на сервере 1С обязательно должен быть установлен 64-разрядный ODBC-драйвер (настройка через C:\Windows\System32\odbcad32.exe).

Шаг 4. Настройка строки подключения и системного DSN

Рассмотрим правильное формирование строки подключения в объекте 1С ВнешнийИсточникДанных. При использовании прямого соединения без предварительного создания DSN строка должна выглядеть следующим образом:


DRIVER={MySQL ODBC 8.0 Unicode Driver};SERVER=94.249.146.189;PORT=3306;DATABASE=users;UID=username;PWD=password;OPTION=3;CHARSET=utf8;

Для повышения стабильности работы рекомендуется создать Системный DSN (System DSN) в диспетчере источников данных ODBC Windows:

  1. Открываем диспетчер ODBC нужной разрядности.
  2. Переходим на вкладку Системный DSN и нажимаем Добавить.
  3. Выбираем MySQL ODBC 8.0 Unicode Driver, задаем имя источника (например, MySQL_Users), вводим параметры сервера и нажимаем кнопку Test.
  4. После успешного теста в конфигураторе 1С достаточно указать компактную строку:

DSN=MySQL_Users;UID=username;PWD=password;

Шаг 5. Альтернативные варианты интеграции

Если использование внешних источников данных по каким-либо причинам ограничено политиками безопасности, рассмотрим альтернативные методы взаимодействия с удаленной базой:

  1. COM-соединение ADODB: прямое выполнение SQL-запросов через объект COMОбъект("ADODB.Connection").
  2. HTTP/REST API: создание промежуточного веб-сервиса на стороне бэкенда и обмен данными через встроенный в 1С объект HTTPСоединение с передачей структур в формате JSON.
← На главную