Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Ошибка при работе с MySQL

0

На старте имеем Asterisk + MySQL

cdr_mysql.conf имеет следующий вид:

hostname=localhost
dbname=asterisk
table=cdr
password=password
user=asterisk
port=3306

в extensions.conf на соответствующий диалплан есть следующие записи:

exten=>_9810.,1,MYSQL(Connetc connid localhost)
.......
exten=>h,1,MYSQL(Disconnect ${CONNID})

но при любом звонке в лог "вываливается" следующие:

== Using UDPTL TOS bits 184
  == Using UDPTL CoS mark 5
  == Using SIP RTP TOS bits 184
  == Using SIP RTP CoS mark 5
    -- Executing [114@local:1] Dial("SIP/121-00000012", "SIP/114,60,rtT") in new stack
  == Using UDPTL TOS bits 184
  == Using UDPTL CoS mark 5
  == Using SIP RTP TOS bits 184
  == Using SIP RTP CoS mark 5
    -- Called 114
    -- SIP/114-00000013 is ringing
    -- SIP/114-00000013 answered SIP/121-00000012
    -- Locally bridging SIP/121-00000012 and SIP/114-00000013
    -- Executing [h@local:1] MYSQL("SIP/121-00000012", "Disconnect ") in new stack
[Dec  3 15:23:03] WARNING[18444]: app_mysql.c:191 find_identifier: Identifier 0, identifier_type 1 not found in identifier list
[Dec  3 15:23:03] WARNING[18444]: app_mysql.c:524 aMYSQL_disconnect: Invalid connection identifier 0 passed in aMYSQL_disconnect
  == Spawn extension (local, 114, 1) exited non-zero on 'SIP/121-00000012'
удалить закрыть спам изменить тег редактировать

спросил 2011-12-03 15:52:35 +0400

Lunx Gravatar Lunx
40 4 6

обновил 2011-12-03 15:53:19 +0400

Comments

Что за бред у вас в диаплане? Какое отношение имеет cdr_mysql и MYSQL(Connetc connid localhost) ?

zzuz ( 2011-12-03 17:03:45 +0400 )редактировать

Конкретнее пожалуйста, может быть чегото не понимаю. Сейчас избавился от проблемы конечно.

Lunx ( 2011-12-03 18:26:35 +0400 )редактировать

2 Ответа

1

а еще лучше используйте realtime. тогда не надо следить за коннектами и пулом коннектов. в extconfig.conf

 tablename=> mysql,tablename

дальше зависит от версии астриска. в даилплане 1.4

;REALTIME(family,fieldmatch,value,field)
extension => _X.,n,Set(res=${REALTIME(tablename,key,1,value)})

в 1.8 все еще проще. там есть функция REALTIME_FIELD и REALTIME_HASH чтоб взять всю строчку.

1.6.х никому использовать не рекомендую вообще.

http://www.voip-info.org/wiki/view/Asterisk+func+realtime

ссылка удалить спам редактировать

ответил 2011-12-04 10:23:12 +0400

meral Gravatar meral flag of Ukraine
21228 23 18 169
http://pro-sip.net/

обновил 2011-12-04 10:25:18 +0400

Comments

А что делать если БД , к которой обращается диаплан - кастомный. К примеру сторонняя БД с билингом. реалтайм тогда тут вообще не причем.

zzuz ( 2011-12-04 17:10:36 +0400 )редактировать

почему? реалтаймом можно довольно сложные запросы выдавать. ну правда желателен все же скил в sql.

meral ( 2011-12-05 11:19:03 +0400 )редактировать

Один фиг , трюки с AGI практичней будут.

zzuz ( 2011-12-05 11:21:51 +0400 )редактировать

agi вобще лучше не использовать. fastAGI еще более менее.

meral ( 2011-12-05 14:39:57 +0400 )редактировать

Ну . впринципе , поддерживаю . Мы просто всегда , когда говорим про AGI , имеем ввиду fastAGI и самописный враппер для его обработки.

zzuz ( 2011-12-05 14:57:47 +0400 )редактировать
1

Синтаксис прост до безумия

MYSQL(Connect connid dhhost dbuser dbpass dbname)

в вашем случае

MYSQL(Connect connid localhost asterisk password asterisk)

Дальше работаем с курсором подключения

MYSQL(Query resultid ${connid} SELECT `search` FROM asterisk.table WHERE `col`='${VAL}')

Потом обрабатываем присвоенное значение переменной resultid

MYSQL(Fetch fetchid ${resultid} RESULT)

в итоге результат видим в переменной RESULT

ссылка удалить спам редактировать

ответил 2011-12-03 17:08:08 +0400

zzuz Gravatar zzuz flag of Russian Federation
6744 2 6 69
http://line24.ru/

обновил 2011-12-03 17:10:55 +0400

Comments

То есть строка exten=>h,1,MYSQL(Disconnect ${CONNID}) не требуеться ?

Lunx ( 2011-12-03 18:18:30 +0400 )редактировать

Требуется .

лучше еще так делать

MYSQL(Clear ${resultid})
MYSQL(Disconnect ${connid}
zzuz ( 2011-12-03 19:21:25 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2011-12-03 15:52:35 +0400

Просмотрен: 577 раз

Обновлен: Dec 04 '11

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.