Страница 1 из 1

Частично не работает MYSQL из плана набора

Добавлено: 18 июн 2020, 10:58
guvijur
Добрый день!

Есть определённый контекст:
exten => _XXXXXX,1,NoOp(${CALLERID(all)})
same => n,MYSQL(Connect connid localhost МЕГАПОЛЬЗОВАТЕЛЬ СУПЕРСЕКРЕТНЫЙПАРОЛЬ asterisk)
same => n,MYSQL(Query resultid ${connid} SELECT channelname FROM union WHERE codeid = '${EXTEN:0:2}' AND minnum <= '${EXTEN:2}' AND maxnum >= '${EXTEN:2}')
same => n,MYSQL(Fetch fetchid ${resultid} SATCHAN)
same => n,MYSQL(Clear ${resultid})
same => n,MYSQL(Query resultid ${connid} SELECT selfcode FROM union WHERE channelname = '${SATCHAN}')
same => n,MYSQL(Fetch fetchid ${resultid} SELFCODE)
same => n,MYSQL(Clear ${resultid})
same => n,MYSQL(Query resultid ${connid} SELECT rec FROM sip WHERE name = '${CALLERID(num)}')
same => n,MYSQL(Fetch fetchid ${resultid} RECUP)
same => n,MYSQL(Clear ${resultid})
same => n,MYSQL(Query resultid ${connid} SELECT callerid FROM sip WHERE name = '${CALLERID(num)}')
same => n,MYSQL(Fetch fetchid ${resultid} RUSNAME)
same => n,MYSQL(Clear ${resultid})
same => n,MYSQL(Disconnect ${connid})
same => n,NoOp(${SATCHAN})
same => n,NoOp(${SELFCODE})
same => n,NoOp(${RECUP})
same => n,NoOp(${RUSNAME})
same => n,Set(CALLERID(all)=${RUSNAME})
same => n,Set(CALLERID(num)=${SELFCODE}${CALLERID{num}})
same => n,GotoIf($["${RECUP}" = "1"]?startrec:recoff)
same => n(startrec),Set(CALLFILENAME=${UNIQUEID}_${EPOCH})
same => n,Set(CDR(userfield)=recfil/${CALLFILENAME}.gsm)
same => n,MixMonitor(/records/recfil/${CALLFILENAME}.gsm)
same => n(recoff),Dial(SIP/${SATCHAN}/${EXTEN:2})
same => n,StopMonitor
same => n,Hangup()

В данном блоке кода не отрабатывают два запроса к БД MySQL к таблице union. При этом запросы проверены через phpmyadmin и они нормально отрабатывают там. Да и следующие два запроса к таблице sip прекрасно отрабатывают. Таблица union 100% существует, названия полей уже 100 раз проверил, но хрен(((

Пожалуйста, ткните меня носом в ошибку!!!

Re: Частично не работает MYSQL из плана набора

Добавлено: 18 июн 2020, 11:18
guvijur
Я нашёл ответ на свой вопрос на другом форуме.

UNION - одно из ключевых слов MySQL. Для использования в качестве имени таблицы или поля его надо брать в обратные апострофы (`union`).

Мало ли тут окажутся такие же чайники, как и я. ;)

Re: Частично не работает MYSQL из плана набора

Добавлено: 18 июн 2020, 12:18
ded
Знающие люди (не я) пишут, что прямые MYSQL-запросы из диал-плана - не комильфо, и лучше написать простенький скрипт такого запроса на РНР, включить туда элементы отладки, поместить его в /var/lib/asterisk/agi-bin/ и вызывать как AGI.
С названием таблицы конечно казус.