You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SIP Kamailio SQL查询失败问题求助

问题修复方案

核心原因

错误提示unknown command, missing loadmodule是因为你使用的sql_query命令由db_sql模块提供,但配置里仅加载了db_mysql(数据库驱动模块),未加载db_sql模块,导致Kamailio无法识别该命令。

修复步骤

  1. 加载db_sql模块
    在WITH_MYSQL条件块中添加db_sql模块的加载语句,确保它与db_mysql一同加载:

    #!ifdef WITH_MYSQL
    loadmodule "db_mysql.so"
    loadmodule "db_sql.so"
    modparam("db_mysql", "db_url", "mysql://kamailio:Pablo3090@localhost/kamailio")
    #!endif
    
  2. 修复SQL注入风险(强烈建议)
    当前查询直接将$rU拼接进SQL语句,存在注入风险,建议改用参数绑定方式:

    if (sql_query("kamailio", "SELECT contact_domain FROM sip_routing WHERE phone_number=%s", "result", $rU)) {
    

    这种方式会自动对变量转义,避免注入攻击。

  3. 验证模块加载状态
    启动Kamailio时可添加-l参数查看已加载模块,确认db_sql和db_mysql均已加载:

    sudo kamailio -f /etc/kamailio/kamailio.cfg -l
    

修改后的完整配置片段

#!ifdef WITH_MYSQL
loadmodule "db_mysql.so"
loadmodule "db_sql.so"
modparam("db_mysql", "db_url", "mysql://kamailio:Pablo3090@localhost/kamailio")
#!endif

request_route {
    # Handle SIP OPTIONS (Heartbeat)
    if (is_method("OPTIONS")) {
        sl_send_reply(200, "OK");
        exit;
    }

    if (is_method("INVITE")) {
        xlog("L_INFO", "Handling INVITE request\n");

        # Query the database for the contact domain based on phone number
        if (sql_query("kamailio", "SELECT contact_domain FROM sip_routing WHERE phone_number=%s", "result", $rU)) {
            if ($dbr(result=>rows) > 0) {
                $var(contact_domain) = $dbr(result=>[0][0]);
                append_to_reply("Contact: <sip:$rU;tgrp=teams_trunk;trunk-context=teams_tk@$var(contact_domain);user=phone>\r\n");
            } else {
                xlog("L_WARN", "No routing found for $rU\n");
            }
            sql_query_free("result");
        } else {
            xlog("L_ERR", "Database query failed!\n");
        }

        sl_send_reply("300", "Multiple Choices");
        exit;
    }
}

额外注意事项

  • 确保Kamailio安装包包含db_sql模块,若缺失需重新编译Kamailio并启用DB_SQL编译选项。
  • 检查数据库用户kamailio是否拥有sip_routing表的查询权限,避免因权限不足导致查询失败。

内容的提问来源于stack exchange,提问作者Pablo3090

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 07:53:22