AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

asterisk ODBC пара вопросов

Newbies/FAQ Forum 5 сообщений -
#1

можно ли юзать транзакции?

и второй...
почему получаю при селекте?

Код:
exten => _XXX,4,Set(ARRAY(TRUNKS)=${ODBC_CHECK_DST(${EXTEN})}) ; receive available trunks
exten => _XXX,5,Set(NUM_TRUNK=${ODBC_COUNT_DST(${EXTEN})})
,........................
exten => _XXX,7,Set(${ODBC_INSERT_MEMBER(${SRV_ID},${EXTEN}${CALLERID(ani)})})


Код:
ERROR[32743]: func_odbc.c:466 acf_odbc_read: Unable to execute query [select distinct t_dst from av_trunks where room = '762']
ERROR[32743]: func_odbc.c:466 acf_odbc_read: Unable to execute query [select count (distinct t_dst) from av_trunks where room = '762']
ERROR[32743]: pbx.c:3365 ast_func_read: Function ODBC_INSERT_MEMBER cannot be read


Код:
[CHECK_DST]
dsn => MySQL-asterisk
readsql= select distinct( t_dst) from av_trunks where room = '${SQL_ESC(${ARG1})}'

[COUNT_DST]
dsn => MySQL-asterisk
readsql= select count (distinct (t_dst)) from av_trunks where room = '${SQL_ESC(${ARG1})}'

[INSERT_MEMBER]
dsn => MySQL-asterisk
writesql=insert into on_peer (t_src,room, subscriber) values ('${SQL_ESC(${ARG1})}','${SQL_ESC(${ARG2})}','${SQL_ESC(${ARG3})}');


и можно ли юзать такие типа функции только на чтение или только на запись?
#2

Транзакции - в теории можно, вызовом пачки соотв. образом определнных в func_odbc функций типа BEGIN_WORK, .. , END_WORK, но поскольку сам движок ничего про них не знает, то между begin/end вполне могут выполняться запросы из других вызовов. Так что лучше в данной ситуации заворачивать транзакции внутрь функций самой БД

А в isql подобный запрос что выдает, пардон?
И вообще, odbc точно правильно прицеплено?

Использовать можно и на чтение и на запись, формат только немного другой в случае записи
#3

Цитата:
А в isql подобный запрос что выдает, пардон?

да, если просто выполнять селект или инсерт на мускульном клиенте , то работает.

Цитата:
И вообще, odbc точно правильно прицеплено?

ну покрайней мере авториазция через него работает.
res_odbc.conf
Код:
[asterisk]
enabled => yes
dsn => MySQL-asterisk
username => asterisk
password => passwd
pre-connect => yes

extconfig.conf
Код:
[settings]
sipusers => odbc,asterisk,sipusers
meetme => odbc,asterisk,meeting_rooms
#4

В func_odbc.conf надо указывать DSN не из unixodbc, а наименование соотв. секции в res_odbc
#5

bird_of_Luck писал(а):
В func_odbc.conf надо указывать DSN не из unixodbc, а наименование соотв. секции в res_odbc

неа, это было правильно, еслия напишу просто астериск то не коннектиться к БД...
...........добавлено
поменял Mysql-asterisk на DBasterisk, хз, мож там длины нехватало или с тире просто криво, но ща не ругается ан авторизацию, при этом DBasterisk указано в
func_odbc.conf
res_odbc.conf
и
odbc.ini