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

libmariadb.dll:如何修改默认连接超时时间及检测超时发生

修改MariaDB Connector/C(libmariadb.dll)连接超时及检测方法

设置连接超时的核心函数

要修改连接不可用服务器时的超时时间,核心是在调用连接函数前,通过mysql_options()或mysql_optionsv()设置对应的超时选项。常用的关键选项有:

  • MYSQL_OPT_CONNECT_TIMEOUT:控制连接阶段的超时时间(单位:秒),默认通常为10秒。设置后,当尝试连接超过该时间仍未建立,会触发超时。
  • 可选补充:MYSQL_OPT_READ_TIMEOUT和MYSQL_OPT_WRITE_TIMEOUT,分别控制后续读写操作的超时,若需要后续交互也限制超时可一并设置。

代码示例

// 初始化连接句柄
MYSQL *conn = mysql_init(NULL);
if (!conn) {
    fprintf(stderr, "初始化连接句柄失败\n");
    return 1;
}

// 设置连接超时为5秒
unsigned int connect_timeout = 5;
if (mysql_options(conn, MYSQL_OPT_CONNECT_TIMEOUT, &connect_timeout) != 0) {
    fprintf(stderr, "设置连接超时失败: %s\n", mysql_error(conn));
    mysql_close(conn);
    return 1;
}

// 可选:设置读写操作超时(若后续需要)
if (mysql_options(conn, MYSQL_OPT_READ_TIMEOUT, &connect_timeout) != 0) {
    fprintf(stderr, "设置读超时失败: %s\n", mysql_error(conn));
    mysql_close(conn);
    return 1;
}

// 尝试建立连接
if (!mysql_real_connect(conn, "your_host", "your_user", "your_pass", "your_db", 3306, NULL, 0)) {
    // 检测是否为超时错误
    switch(mysql_errno(conn)) {
        case CR_CONN_HOST_ERROR:
            fprintf(stderr, "连接主机超时\n");
            break;
        case CR_CONNECTION_ERROR:
            fprintf(stderr, "连接过程超时/失败\n");
            break;
        default:
            fprintf(stderr, "连接失败: %s\n", mysql_error(conn));
            break;
    }
    mysql_close(conn);
    return 1;
}

// 连接成功后的逻辑...
mysql_close(conn);

检测超时的方法

当mysql_real_connect()返回NULL时,通过以下方式判断是否为超时:

  1. 调用mysql_errno()获取错误码,匹配超时相关的错误常量:
    • CR_CONN_HOST_ERROR:无法在指定时间内连接到目标主机,典型的连接超时场景。
    • CR_CONNECTION_ERROR:连接过程中出现错误,包含部分超时情况(如握手阶段超时)。
  2. 辅助验证:调用mysql_error()获取错误描述,超时场景下通常会包含"Timeout during connect"或类似关键词。

注意事项

  • MYSQL_OPT_CONNECT_TIMEOUT的取值范围是1到31536000秒(即一年),超出范围会被截断到合法值。
  • 系统级TCP超时设置可能会影响最终实际超时时间,但Connector/C的选项会优先在应用层进行控制。
  • 若使用旧版的mysql_connect()函数,同样可以先调用mysql_options()设置选项,因为mysql_connect()内部会调用mysql_real_connect()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:41:06