Search code examples
sqlconfigkamailio

Insert new timestamp value to acc table in kamailio


I want to add a new column to acc table. I created a new column in the acc table of type timestamp and named it ring_time. In every call I put the ring time to a $dlg_var like this:

$dlg_var(ringtime) = $Ts;

Then I add a extra column in config like this:

modparam("acc", "log_extra", "src_user=$fU;src_domain=$fd;src_ip=$si;" "dst_ouser=$tU;dst_user=$rU;dst_domain=$rd;ring_time=$dlg_var(ringtime)")

but when I try to test it, I always get:

db_mysql [km_dbase.c:122]: db_mysql_submit_query(): driver error on query: Incorrect datetime value: '1591361996' for column kamailio.acc.ring_time at row 1 (1292) 
Jun 5 17:29:59 kamailio /usr/sbin/kamailio[22901]: ERROR: {2 102 INVITE [email protected]:5060} <core> [db_query.c:244]: db_do_insert_cmd(): error while submitting query
Jun 5 17:29:59 kamailio /usr/sbin/kamailio[22901]: ERROR: {2 102 INVITE [email protected]:5060} acc [acc.c:477]: acc_db_request(): failed to insert into database

Solution

  • Sounds like an error with the SQL INSERT query, if I had to guess I'd say you're being caught out by the date format in the SQL table not matching the date format you're pushing to it.

    I don't know the structure of your database, but there's a simple trick I use for debugging SQL queries when I can't see the query being run;

    Start up Wireshark/TCPdump on the machine and packet capture for all SQL traffic (MySQL is port 3306) and replicate the error. From the packet capture and you'll be able to see the Query Kamailio's database engine ran.