Пытаюсь заставить работать CDR через ODBC драйвер.
sip*CLI> core show version
Asterisk 12.5.0 built by ubuntu @ sip.xxxxxx on a x86_64 running Linux on 2014-07-25 04:57:36 UTC
sip*CLI> module show like odbc
Module Description Use Count Status
cdr_adaptive_odbc.so Adaptive ODBC CDR backend 0 Running
cdr_odbc.so ODBC CDR Backend 0 Running
cel_odbc.so ODBC CEL backend 0 Running
func_odbc.so ODBC lookups 0 Running
res_config_odbc.so Realtime ODBC configuration 0 Running
res_odbc.so ODBC resource 0 Running
6 modules loaded
sip*CLI> odbc show all
ODBC DSN Settings
-----------------
Name: asteriskcdrdb
DSN: MySQL-asteriskcdrdb
Last connection attempt: 1970-01-01 05:00:00
Pooled: No
Connected: Yes
sip*CLI> cdr show status
Call Detail Record (CDR) settings
----------------------------------
Logging: Enabled
Mode: Simple
Log unanswered calls: Yes
Log congestion: No
* Registered Backends
-------------------
ODBC
csv
cdr-custom
Adaptive ODBC
cdr_manager
В момент когда астериск должен сделать запись происходит следующее:
[2014-08-25 12:14:58] WARNING[7049] cdr_odbc.c: cdr_odbc: Error in ExecDirect: -1, query is: INSERT INTO cdr (calldate,clid,src,dst,dcontext,channel,dstchannel,lastapp,lastdata,duration,billsec,disposition,amaflags,accountcode,uniqueid,userfield) VALUES ({ts '2014-08-25 12:14:39'},?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
[2014-08-25 12:14:58] WARNING[7049] res_odbc.c: SQL Execute error! Verifying connection to asteriskcdrdb [MySQL-asteriskcdrdb]...
[2014-08-25 12:14:58] WARNING[7049] cdr_odbc.c: cdr_odbc: Error in ExecDirect: -1, query is: INSERT INTO cdr (calldate,clid,src,dst,dcontext,channel,dstchannel,lastapp,lastdata,duration,billsec,disposition,amaflags,accountcode,uniqueid,userfield) VALUES ({ts '2014-08-25 12:14:39'},?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
[2014-08-25 12:14:58] ERROR[7049] cdr_odbc.c: CDR direct execute failed
Самое странное, что в теле запроса не закончены подстановки "?" на значения полей.
Далее я произвожу запрос через драйвер ODBC, чтобы удостовериться, что проблема не в нем:
root@sip:/var/log/asterisk# echo 'insert into asteriskcdrdb.cdr (calldate) VALUES ("0000-00-00 00:00:00");' | isql -v MySQL-asteriskcdrdb asteriskuser 2Nv6kUAtRrC76y7jL
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> insert into asteriskcdrdb.cdr (calldate) VALUES ("0000-00-00 00:00:00");
SQLRowCount returns 1
root@sip:/var/log/asterecho 'select * from asteriskcdrdb.cdr;' | isql -v MySQL-asteriskcdrdb asteriskuser 2Nv6kUAtRrC76y7jL
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select * from asteriskcdrdb.cdr;
SQLRowCount returns 1
1 rows fetched
Таким образом получается, что сам астериск формирует неправильный запрос.
Тема без ответов на форуме астериска.
Кто-нибудь сталкивался?