Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

1С and Mysql

1С and Mysql
Я
   gospodenkods
 
14.12.20 - 11:38
Граждане знатоки  прош помощи  ибо я  походу  тупенький.
Вообщем   чего делаю
Цепляюсь к базе Mysql
        Пароль = Настройка.Пароль;
    ODBC = СокрЛП(ИмяODBC);
    DB     = СокрЛП(ИмяБазы);
    User = СокрЛП(ИмяПользователя);
    Pass = СокрЛП(Пароль);
    Порт = "3306";
    СтрокаПодключения = "DRIVER={MySQL ODBC 5.1 Driver};SERVER="+СокрЛП(ODBC)+";PORT="+Порт+";DATABASE="+СокрЛП(DB)+";uid="+СокрЛП(User)+";pwd="+СокрЛП(Pass)+";";
    
    Соединение = Новый COMОбъект("ADODB.Connection");
        
        Попытка
        Соединение.open(СтрокаПодключения);
    Исключение
        Возврат Неопределено;
    КонецПопытки;

Все хорошо , все соединяет на выходе получаю Com Объект.

Скармливаю ему вот этот запрос !

ТекстЗапроса = "UPDATE modx_ms2_products SET price=( CASE  WHEN (id=2074) THEN '1688' WHEN (id=13225) THEN '45' WHEN (id=504) THEN '531' WHEN (id=1770) THEN '249' WHEN (id=545) THEN '198' WHEN (id=17582) THEN '95' WHEN (id=1174) THEN '329' WHEN (id=2051) THEN '8080' WHEN (id=1509) THEN '302' WHEN (id=643) THEN '748' END)  WHERE id IN (2074,13225,504,1770,545,17582,1174,2051,1509,643)"

Говорю  1С-ке

Соединение .Execute(ТекстЗапроса);

Как  итог получаю  висящую 1С-ку ..  Без  признаков жизни .

Хотя  в любой IDE аля HeidiSQL все проходит на  ура , ну врочем как и из консоли Nix тоже  проблем нет ..

Что я делаю не так и куда мне   капнуть ???
   Волшебник
 
1 - 14.12.20 - 11:41
Сделай несколько запросов типа:
UPDATE modx_ms2_products SET price=1688 WHERE id=2074
   бомболюк
 
2 - 14.12.20 - 11:41
Поменял бы ты драйвер на поновее и юникодовский для начала.
   gospodenkods
 
3 - 14.12.20 - 11:45
(1) Вот это как  раз на  Ура  продетает , вообще  без проблем .  Но  гонять кучу запросов  циклом ... ну так  себе   затею . Хочу  все собрать одним запросом .
   mikecool
 
4 - 14.12.20 - 11:45
подключить базу mysql как внешний источник данных не предлагать?
   Волшебник
 
5 - 14.12.20 - 11:46
(3) В данном случае запрос на обновление и будет правильнее выполнить запрос в цикле.
   gospodenkods
 
6 - 14.12.20 - 11:47
(4) Не , там своя  специфика  .. Переписать кучку   кода придется  .. Недельки так на 3-4 :)
   gospodenkods
 
7 - 14.12.20 - 11:48
(5) Да я  боюсь  не будет ли  Mysql  подтупливать  при  гонке запросов в цикле .. Ну скажем мне если записей  тысяч 30 обновить ?
   Волшебник
 
8 - 14.12.20 - 11:48
(7) Всё будет быстро
   Волшебник
 
9 - 14.12.20 - 11:49
если надо ещё быстрее, есть LOAD DATA
   Волшебник
 
10 - 14.12.20 - 11:51
или можно сделать файл с пачкой SQL-запросов и скормить его утилите mysql
   gospodenkods
 
11 - 14.12.20 - 11:56
(2) Попробую  сейчас  сделать это  . (10)  Словам Волшебника надо доверять :) Попробую , погляжу  как  все выйдет .
Отпишусь :)
   gospodenkods
 
12 - 14.12.20 - 12:20
Господа ..Дичайше извиняюсь...  
Походу  дело было не в бабине ..

Вообщем поставил  Конектор 8 версии .. Виснет ..
Откатил на 5.1  и как  советовал Волшебник , решил пустить  циклом .. Но и в цикле  тоже виснет !!
Блин , психанул , перезагрузил комп ..

Пнул  в цикле НЕ виснет ! Пнул одним запросом НЕ виснет..

Вообщем ,вылечилось все  перезагрузкой.  

Все равно ребят спасибо ,что не бросили в беде :)
   Волшебник
 
13 - 14.12.20 - 12:25
>> психанул — перезагрузил комп .. 

В любой непонятной ситуации первым делом надо перезагружаться и чистить кэш.
   fisher
 
14 - 14.12.20 - 12:48
Нагуглил, что ежели в строке соединения с MySQL указать MULTI_STATEMENTS=1, то можно выполнять пакетные запросы (с пятой версии начиная, кажись).
Т.е. можно сгенерить пакетный запрос с кучей UPDATE через точку с запятой и послать его на выполнение.
   gospodenkods
 
15 - 14.12.20 - 19:32
(14) Надо будет в целях  саморазвития  поглядеть че за зверь :)  Спасибо.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.