Установка подключения к MySQL через ODBC connector



Руководство, облегчающее жизнь при очередной настройке подключения MySQL к 1С через ODBC connector (driver).
Оставлю это хотя бы для себя на память 🙂

Итак, для того, чтобы настроить связь между MySQL и 1С нужно:

1. Скачать дистрибутив установки ODBC connector.

Я обычно пользуюсь ODBC 5.3 Unicode driver, он еще называется 5.3.0 alpha, скачать можно здесь https://downloads.mysql.com/archives/c-odbc/).

Устанавливать нужно на сервер, на котором лежит база данных. То есть, если в пути к базе написано «10.80.11.30», то и устанавливаем на сервер 10.80.11.30, если в пути к базе написано «localhost», то и устанавливаем на этот же сервер «localhost», ну вы понимаете.

Если в процессе установки возникает ошибка «Error 1318:Error installing ODBC Driver ……. the specified module could not be found … myodbc5s.d …», значит на сервере не хватает пакета «Microsoft Visual C++ 2010 Redistributable Package», скачать можно здесь https://www.microsoft.com/en-us/download/confirmation.aspx?id=14632 (x64) и здесь https://www.microsoft.com/en-us/download/confirmation.aspx?id=5555 (x86). Если вы взяли версию драйвера отличную от моей любимой ODBC 5.3 Unicode driver, то пакет, необходимый для установки ODBC может быть и другой, ориентируйтесь на название недостающего компонента в описании ошибки, и вы обязательно найдете какого именно пакета Microsoft Visual C++ вам не хватает. Пакет Microsoft Visual C++ нужно тоже установить и для 32-х разрядной системы, и для 64-х разрядной.

2. Настроить ODBC connector.

На том сервере, на котором мы устанавливали ODBC connector, запускаем C:WindowsSysWOW64odbcad32.exe, добавляем базу в User DSN и System DSN, обязательно нажимаем «Test» и радуемся, что соединение устанавливается.

Там же запускаем C:Windowssystem32odbcad32.exe, добавляем базу в User DSN и System DSN, обязательно нажимаем «Test», опять бурно радуемся, что соединение устанавливается.

3. Если соединение не устанавливается, проверяем, что в MySQL не наложены ограничения на IP, с которых осуществляется подключение. Если это не помогло, можно установить MySQL Workbench (https://www.mysql.com/products/workbench/), добавить туда базу данных MySQL и протестировать подключение — у Workbench более информативные сообщения об ошибке, зачастую с первого раза понятно куда копать.

4. После всех манипуляций можно выпить бокальчик вина и создать обработку работы с базой MySQL. Это очень просто:   

 АДОСоединение = Новый COMОбъект("ADODB.Connection");

Если АДОСоединение.State = 0 // 0 - adStateClosed
Тогда
SRV = "..."; //адрес сервера MySQL
DB = "..";//имя базы MySQL
UID = "..";//имя пользователя MySQL
PWD = "...";//пароль пользователя MySQL
PORT = "";//порт сервера MySQL, например 3306
cstr = "DRIVER={MySQL ODBC 5.3 Unicode Driver};
|SERVER=" + SRV + ";UID=" + UID + ";
|PASSWORD=" + PWD + ";DATABASE=" + DB + ";PORT=" + PORT + ";";
Попытка
АДОСоединение.Open (cstr);
Исключение
АДОСоединение = Неопределено;
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;

//выполняем запрос к MySQL:

ТекстЗапроса = "SELECT ITEMS.ID FROM ITEMS";

Table = АДОСоединение.Execute(ТекстЗапроса);

Пока Table.EOF() = 0 Цикл

Сообщить(Table.Fields("ID").Value);
Table.MoveNext();

КонецЦикла;
Table.Close();

2 Comments

  1. transt

    Я регистрирую только в C:WindowsSysWOW64odbcad32.exe в Системный DSN

    Можно так подключиться:

    Соединение = Новый COMОбъект(«ADODB.Connection»);
    Соединение.ConnectionString = («DSN=»+СокрЛП(Объект.Сайт.ИмяПараметровDSN));
    
    Попытка
    Соединение.Open();
    РезультатСоединения = Истина;
    Исключение
    РезультатСоединения = Ложь;
    КонецПопытки;
    
    Если Не РезультатСоединения Тогда
    Возврат «Соединение с сайтом не установлено.»;
    Иначе
    Возврат «Соединение выполнено успешно.»;
    КонецЕсли;
    

    Показать

    Если из драйвера соединение работает, то и из 1С подвяжется

    Reply
  2. e.potapov

    А Если сервер 1С установлен на Centos 7. Можно ли сделать так же?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *