![]() |
![]() |
|
1С and Mysql | ☑ | ||
---|---|---|---|---|
0
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
|
Поменял бы ты драйвер на поновее и юникодовский для начала.
|
|||
3
gospodenkods
14.12.20
✎
11:45
|
(1) Вот это как раз на Ура продетает , вообще без проблем . Но гонять кучу запросов циклом ... ну так себе затею . Хочу все собрать одним запросом .
|
|||
4
mikecool
14.12.20
✎
11:45
|
подключить базу mysql как внешний источник данных не предлагать?
|
|||
5
Волшебник
14.12.20
✎
11:46
|
(3) В данном случае запрос на обновление и будет правильнее выполнить запрос в цикле.
|
|||
6
gospodenkods
14.12.20
✎
11:47
|
(4) Не , там своя специфика .. Переписать кучку кода придется .. Недельки так на 3-4 :)
|
|||
7
gospodenkods
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
|
|||
11
gospodenkods
14.12.20
✎
11:56
|
(2) Попробую сейчас сделать это . (10) Словам Волшебника надо доверять :) Попробую , погляжу как все выйдет .
Отпишусь :) |
|||
12
gospodenkods
14.12.20
✎
12:20
|
Господа ..Дичайше извиняюсь...
Походу дело было не в бабине .. Вообщем поставил Конектор 8 версии .. Виснет .. Откатил на 5.1 и как советовал Волшебник , решил пустить циклом .. Но и в цикле тоже виснет !! Блин , психанул , перезагрузил комп .. Пнул в цикле НЕ виснет ! Пнул одним запросом НЕ виснет.. Вообщем ,вылечилось все перезагрузкой. Все равно ребят спасибо ,что не бросили в беде :) |
|||
13
Волшебник
14.12.20
✎
12:25
|
>> психанул — перезагрузил комп ..
В любой непонятной ситуации первым делом надо перезагружаться и чистить кэш. |
|||
14
fisher
14.12.20
✎
12:48
|
Нагуглил, что ежели в строке соединения с MySQL указать MULTI_STATEMENTS=1, то можно выполнять пакетные запросы (с пятой версии начиная, кажись).
Т.е. можно сгенерить пакетный запрос с кучей UPDATE через точку с запятой и послать его на выполнение. |
|||
15
gospodenkods
14.12.20
✎
19:32
|
(14) Надо будет в целях саморазвития поглядеть че за зверь :) Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |