Имя: Пароль:
1C
1С v8
ODBC. На файловой работает, на SQL не работает
0 Slon747
 
10.10.17
08:28
На файловой 8.3.8.2322 x32 подключается к внешнему источнику данных MySQL нормально.
В клиент-серверном варианте тот же релиз, (клиент x32, сервер х64) возникает ошибка еще в конфигураторе, при попытке подключения к внешнему источнику.
На клименте Win7 x64. ODBC-драйвер стоит x32, т.к. 1С тоже х32.
Пробовал удалить ODBC-драйвер x32 и ставить х64, не помогло.
В чем может быть дело?

Описание: [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
1 MM
 
10.10.17
08:35
(0) Где создаётся объект ODBC?
Если на клиенте то работать будет как и на файловой, а если на сервере 1С, то нужен  драйвер той же битности что и сервер (64х).
Т.е. в каком процессе ОС создаёшь объект ODBC, ту битность ДЛЛ и нужно установить, зарегистрировать и тд.
2 Slon747
 
10.10.17
09:03
(1) Если подключаюсь через конфигуратор, то на клиенте. Клиентская 1с х32, значит и ODBC должен быт х32.
3 vde69
 
10.10.17
09:05
(2) как ты использовать его будешь?

на сколько я понимаю в основном на сервере, значит нужно ставить на сервер...
4 Slon747
 
10.10.17
09:57
(3) Действительно, так.
Установил на сервер ODBC x64 и на сервере же проверил в конфигураторе - таблицы сервера MySQL отобразились.
Там же на сервере через Предприятие пытаюсь подключиться, пишет:
-------------
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
-------------

В чем же теперь дело?
5 Мимохожий Однако
 
10.10.17
09:58
(4) Делай на клиентской стороне использование этого драйвера.
6 Slon747
 
10.10.17
10:06
(5) На клиенте поставил ODBC x64.
Подключаюсь через конфигуратор - успешно.
Подключаюсь через Предприятие:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): Не удается загрузить указанный драйвер из-за системной ошибки  193:  (MySQL ODBC 5.1 Driver, C:\Program Files (x86)\MySQL\Connector ODBC 5.1\myodbc5.dll).

    СтрокаСоединенияССерверомOpencart = "
            |DRIVER={MySQL ODBC 5.1 Driver};
            |SERVER=" + Ссылка.СерверMySQL + ";
            |DATABASE=" + Ссылка.БазаДанных + ";
            |UID=" + Ссылка.ИмяПользователяMySQL + ";
            |PWD=" + Ссылка.ПарольПользователяMySQL + ";";
    
    Клиент = Новый COMОбъект("ADODB.Connection");
    Клиент.ConnectionString = СтрокаСоединенияССерверомOpencart;
    
    Попытка
        Клиент.Open();
    Исключение
        СообщениеОбОшибке(ОписаниеОшибки());
        Возврат Ложь;
    КонецПопытки;


При этом в строке подключения те же данные, что и в конфигураторе.
7 бомболюк
 
10.10.17
10:22
может 5.3 поставить?
8 perester
 
10.10.17
10:26
(6) Попробуй запустить с компьютера сервера, получится?
9 Slon747
 
10.10.17
10:29
(8) Пробовал. Описал в (4)
10 vde69
 
модератор
10.10.17
10:32
(4) тебе нужно
1. войти на сервер под пользователем службы 1с
2. перенастроить в конфигураторе
11 Slon747
 
10.10.17
10:57
(10) Пользователю USR1CV82 добавил роль удаленного рабочего стола.
Зашел под ним, подключился через конфигуратор к внешнему источнику MySQL, сохранил конфигурацию.
При попытке подключения через Предприятие, пишет:

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
12 Мимохожий Однако
 
10.10.17
11:01
(11) Код подключения к базе работает на сервере или на клиенте?
13 Slon747
 
10.10.17
11:07
(11) На клиенте.
(7) Не получается поставить 5.3. Пишет про системную ошибку.
14 vde69
 
модератор
10.10.17
11:08
(13) на клиенте и не должно работать... переноси код на сервер..
15 vde69
 
модератор
10.10.17
11:09
(14) +

на клиенте в УФ даже обычные запросы не работают :)
16 Slon747
 
10.10.17
11:11
(14) Примерно такой же код (тоже MySQL и тоже внешний источник данных с ODBC) работает на клиенте в SQL-базе (другой сервер).
17 vde69
 
модератор
10.10.17
11:27
(16) объясняю популярно

1. внешние источники пишут строку подключения в конфу.
2. нормальный код не должен зависеть от клиентского окружения
3. если п2 не выполняется IT шник бегает с высунутом языком по всем клиентам и настраивает, на страивает, настраивает окружение... А потом еще раз бегает и настраивает, настраивает...

собственно именно по этому и следует выполнять все на сервере...
18 Slon747
 
10.10.17
11:36
(17) Ок. Но я пока что не могу добиться, чтобы на сервере в терминале заработало.
19 vde69
 
модератор
10.10.17
11:48
(18) на сервере это НЕ В ТЕРМИНАЛЕ !!!! это в СЕРВЕРНОМ МОДУЛЕ 1с !!!
20 Slon747
 
10.10.17
11:52
(19) Я это понял. Вопрос, почему на клиентской стороне 1с не работает?
21 vde69
 
модератор
10.10.17
12:02
(20) по тому, что и не должно...

у тебя настройки общие, в настройки пишется как минимум строка подключения которая содержит имя драйвера, то есть у тебя и на сервере и на клиенте должен стоять ОДИНАКОВЫЙ драйвер (и быть одинаково зарегистрирован в системе), только в этом случае работа возможна и на клиенте (при соблюдении еще кучи условий)
Основная теорема систематики: Новые системы плодят новые проблемы.