我想向acc表中添加一个新列。我在acc表中创建了一个类型为timestamp的新列,并将其命名为ring_time。在每个调用中,我将振铃时间设置为如下所示的$dlg_var:
$dlg_var(ringtime) = $Ts;然后我在config中添加一个额外的列,如下所示:
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)")但当我尝试测试它时,我总是得到:
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 105a0f4a3d99a0a5558355e54b43f4e1@192.168.1.121: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 105a0f4a3d99a0a5558355e54b43f4e1@192.168.1.121:5060} acc [acc.c:477]: acc_db_request(): failed to insert into database发布于 2020-06-06 07:21:21
听起来像是SQL INSERT查询的错误,如果必须猜测,我会说您被SQL表中的日期格式与您推送的日期格式不匹配所发现。
我不知道你的数据库的结构,但我有一个简单的技巧,当我看不到SQL查询正在运行时,我可以用它来调试SQL查询;
在机器上启动Wireshark/TCPdump并捕获所有SQL流量的数据包(MySQL是端口3306),然后复制错误。从数据包捕获中,您将能够看到查询Kamailio的数据库引擎正在运行。
发布于 2020-06-12 23:29:10
如果出现错误"db_mysql km_dbase.c:122: db_mysql_submit_query():driver error on query: it value:'1591361996‘for column kamailio.acc.ring_time at row 1 (1292)",则'1591361996’看起来就像是$dlg_var(ringtime)的一个时期。错误中的“不正确的DateTime值”部分看起来像是数据库试图以datetime数据类型存储该值,因此数据类型不匹配。仔细检查,您可能需要更改ringtime以转换为datetime,或者将数据库列更改为需要使用纪元的类型。
https://stackoverflow.com/questions/62217772
复制相似问题