Имя: Пароль:
1C
1С v8
1С + mySQL
0 gvsgvs
 
29.09.15
10:54
Добрый день.
При подключении к базе ругается     Connection.open(ConnectString);    
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию



драйвер стоит ODBC, пользователя DSN прописал, подскажите пожалуйста, что еще нужно сделать чтобы заработало
1 jurassic
 
29.09.15
10:55
присвоить в ConnectString ну хоть что-нибудь
2 gvsgvs
 
29.09.15
10:57
выглядит она вот так ConnectString:Driver={MySQL ODBC 5.3 Driver};Server=00.00.00.00;PORT=3306;Database=000000;User=0000;Password=00000000
3 gvsgvs
 
29.09.15
10:59
причем при прописывании  пользователя DSN есть кнопка тест при ее нажатии говорит что все ОК, а из 1Ске не могу подключиться
4 Живой Ископаемый
 
29.09.15
11:00
потому что сервер 64-битный, и драйвера нужно было поставить 64-битные. Ну или наоборот
5 gvsgvs
 
29.09.15
11:03
64 битный драйвер ставить  даже если у меня винды 32 двух битные?
6 Живой Ископаемый
 
29.09.15
11:04
Сервер 1С у тебя какой?
7 gvsgvs
 
29.09.15
11:05
задал это вопрос админу пока нет ответа, но думаю 64 битный по крайне это логично
8 Живой Ископаемый
 
29.09.15
11:07
тогда драйвера, 64-битные же нужно установить на ту же винду, где крутится твой 64-битный сервер 1С.
И тестировать ODBC источник данных нужно с него же.
9 shuhard_серый
 
29.09.15
11:07
(7) проверь на файловой 1С, он всегда 32 разрядная в винде
10 Живой Ископаемый
 
29.09.15
11:08
но даже если и не 64-битный, а окажется что 32-битный сервер - все равно драйвера ставить нужно на ту, серверную винду
11 gvsgvs
 
29.09.15
11:09
правильно я понял, предлагаешь начало оттестировать когда MySQL и 1С стоят на одном компе, а затем уже разносить их в сети?
12 gvsgvs
 
29.09.15
11:10
я на файловой базе и пробую это сделать, а сервер от меня далеко стоит, в смысле мы с ним не в одной локальной сети
13 gvsgvs
 
29.09.15
11:11
то есть драйвер нужно ставить не на комп с которого я запускаю 1С а на сервер?
14 ДенисЧ
 
29.09.15
11:11
(13) У тебя код серверный? Значит, на сервер нужно ставить.
15 Живой Ископаемый
 
29.09.15
11:13
driver={MySQL ODBC 5.3 Unicode Driver}; server=SERVER; uid=USER; pwd=PWD; database=DATABASE; STMT=SET CHARACTER SET utf8

====

ну если у тебя будет клиент-серверная база, и например обработка будет выполняться или в тонкой форме или в регламентном задании, то обязательно на сервер. Если в толстой форме, то на твой клиентский комп
16 shuhard_серый
 
29.09.15
11:13
(12)[я на файловой базе и пробую это сделать,]
тогда версия о 64Х отпадает и нужен весь код, а не этот огрызок
17 Живой Ископаемый
 
29.09.15
11:14
короче, где будет выполняться твой код, там и нужен драфвер
18 gvsgvs
 
29.09.15
11:15
исполнятся будет на сервере конечно, база 1С файловая


сейчас попытался себе на локальный комп поставить драйвер 64 битый как и ожидалась ругается и ставить не хочет
19 gvsgvs
 
29.09.15
11:16
код вот, где с инета слизал

Процедура КнопкаВыполнитьНажатие(Кнопка)
           ВыполнитьSQL(текстSQL);
КонецПроцедуры


// Возвращает строку соединения с базой MySql
Функция ПолучитьConnectStringDB();
    
    
    user="000";
    password="0000";
    //CHARSET=utf8
    Порт="3306";
    database="00000";
    server="000000000";
    
    ConnectString="Driver={MySQL ODBC 5.3 Driver};"
        + "Server="    + server
        + ";PORT="        +Порт
        + ";Database=" + database
        + ";User="     + user
        + ";Password=" + password;          
        //+ ";Option=3;";          
        
    сообщить("ConnectString:" + ConnectString);    
    
    Возврат ConnectString;
    
КонецФункции
                        


Функция ВыполнитьSQL(текстSQL);
    
    ConnectString=ПолучитьConnectStringDB();
    Connection = Новый COMОбъект("ADODB.Connection");
    Connection.open(ConnectString);    
    Попытка
        adCmdText_1 = 1;
        ss=Connection.Execute(текстSQL,,adCmdText_1);  
        Connection.Close();
        сообщить("Execute-[OK!]");
    Исключение                    

        Для каждого ADOErr из  Connection.Errors   Цикл
            сообщить("ERROR:" + Символы.ВК
                + текстSQL              
                + "Ошибка: " + ADOErr.Number
                + " : " + ADOErr.Description     + Символы.ВК
                + " : " + ADOErr.Source         + Символы.ВК
                + " : " + ADOErr.SQLState         + Символы.ВК
                + " : " + ADOErr.NativeError     + Символы.ВК
                );                  
                
        КонецЦикла;
                Connection.Close();

    КонецПопытки;    
        
    Возврат Неопределено;
    
КонецФункции
20 shuhard_серый
 
29.09.15
11:16
(18)[исполнятся будет на сервере конечно, база 1С файловая ]
ты про файловый сервер или про rphost ?
21 Живой Ископаемый
 
29.09.15
11:18
ну дык есть на сервере 000000000 база 00000?
Если поставить на комп dbForge  к примеру, он к ней приконнектится?
22 shuhard_серый
 
29.09.15
11:21
(21) +1
хватит и udl файлика
23 gvsgvs
 
29.09.15
11:21
нашел ошибку свою конектор не тот указал сейчас ругается по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса
24 gvsgvs
 
29.09.15
11:22
цель из файловой базе обратиться к MySQL и получить содержание таблицы
25 gvsgvs
 
29.09.15
11:23
вот это правильный коннектор Connection = Новый COMОбъект("ODBC.Connection");?
или правильный вот этот Connection = Новый COMОбъект("ADODB.Connection");
26 shuhard_серый
 
29.09.15
11:24
(25) ясен пень
Новый COMОбъект("ADODB.Connection");
27 Живой Ископаемый
 
29.09.15
11:30
чувак, у тебя (19) написато
Connection = Новый COMОбъект("ADODB.Connection");
И оно правильно..
28 gvsgvs
 
29.09.15
11:32
я думал что вот так прокатит Новый COMОбъект("ODBC.Connection"); не прокатило
29 Живой Ископаемый
 
29.09.15
11:34
а почему? Напиши там еще "ЭкспектоПатронум.Connection" вдруг прокатит
30 gvsgvs
 
29.09.15
11:36
когда сидишь с проблемой несколько часов хватаешься за любую идею так как  разумные идеи уже кончились
31 Живой Ископаемый
 
29.09.15
11:37
так а что не получалось с ADODB, что тебя заставило ухватиться за ЭкспектоПатронум?
32 shuhard_серый
 
29.09.15
11:38
(30) душещипательная история
на мисте туча готового кода и ни каких проблем  с MySQL нет
включая внешние источники данных
33 gvsgvs
 
29.09.15
11:38
При подключении к базе ругается     Connection.open(ConnectString);    
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
34 gvsgvs
 
29.09.15
11:44
(32) если бы у меня работал этот код то и вопросов бы небыло
35 Живой Ископаемый
 
29.09.15
11:44
так что - по-прежнему не подключается?
36 gvsgvs
 
29.09.15
11:45
нет, не подключается
37 Живой Ископаемый
 
29.09.15
11:46
поставь dbFoge и подключись им к этой же базе на этом же сервере

Локализуй проблему - исключи из уравнения 1С, но тем не менее оставь 32-битное приложение. Подключится оно или нет

И еще - что за винда?
38 gvsgvs
 
29.09.15
11:50
проблема на сколько я понимаю в 1С так как с моего локального компа через настройки драйвера к базе он подключается без проблем https://cloud.mail.ru/public/G8RG/x38JX9Bk5 виндна семерка 32 битная
39 фобка
 
29.09.15
11:51
40 Живой Ископаемый
 
29.09.15
11:52
убедись в этом при помощи другого 32-битного виндового приложения. Если у dbForge не будет проблем а 1С - тогда дело в 1С, да. А если будет и у dbForge, тогда дело например в правах.
41 Живой Ископаемый
 
29.09.15
11:53
Запусти саму 1С с правами администратора, раз Винда - 7ка
42 Живой Ископаемый
 
29.09.15
11:54
Правая кнопка мыши "Запуск с правами администратора"
43 gvsgvs
 
29.09.15
11:58
под администратором запустил 1С, ошибка таже
44 Живой Ископаемый
 
29.09.15
12:01
я все жду когда ты скажешь "А dbForge я ставить не буду потому что считаю твой совет дебильным, хотя ты его и повторил уже 5 раз"
45 gvsgvs
 
29.09.15
12:06
как раз его сейчас скачал и ставлю
46 gvsgvs
 
29.09.15
12:08
через dbForge  соединение установлено и показал таблицы базы
47 Живой Ископаемый
 
29.09.15
12:10
круто... странно...

А можешь в 1С добавить ВнешнийИсточникДанных и указать ту же базу MySQL
48 gvsgvs
 
29.09.15
12:13
да с самого начало через него и прбывал та же ошибка
49 gvsgvs
 
29.09.15
12:14
сейчас переделал из обычных форм на управляемые результат тот же
50 Живой Ископаемый
 
29.09.15
12:15
Можешь поставить такую строку подключения, только со своей базой/сервером/юзером/паролем:

driver={MySQL ODBC 5.3 Unicode Driver}; server=SERVER; uid=USER; pwd=PWD; database=DATABASE; STMT=SET CHARACTER SET utf8

?
51 gvsgvs
 
29.09.15
12:31
да сейчас сделаю
52 gvsgvs
 
29.09.15
12:40
спасибо большое, твоя строка заработала, и через внешние источники тоже
53 Живой Ископаемый
 
29.09.15
12:44
И можно было указать еще {MySQL ODBC 5.3 ANSI Driver}
и подозреваю, что если ты посмотришь в ODBC-источниках, то у тебя именно такие два..
А просто {MySQL ODBC 5.3 Driver} - нету
54 gvsgvs
 
29.09.15
12:52
да ты прав , спасибо тебе за помощь а то с 8 утра бился над проблемой
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.