【发布时间】:2017-01-09 14:29:55
【问题描述】:
我正在测试一些 mysql 与我的 C 代码的集成。我注意到,如果在二进制文件运行时 mydomain.com 不可用,它会停留 2 分钟多一点。我想避免这种情况并将超时设置为最多 5 秒。我该怎么做?
#include <my_global.h>
#include <mysql.h>
int main() {
MYSQL *con = mysql_init(NULL);
if (con == NULL) {
fprintf(stderr, "%s\n", "debug: could not initialize database");
exit(1);
}
if (mysql_real_connect(con, "mydomain.com", "testuser",
"testuserpwd", "db_test", 0, NULL, 0) == NULL) {
exit(1);
}
...
mysql_close(con);
}
【问题讨论】:
-
哦!我认为
mysql_error(con)在证明con == NULL不好之后。如果您无法初始化 MySQL,那么这不是 mysql 的错,因此,到目前为止,mysql 所知道的内容将是“没有错误”。 -
@Iharob - 如果您指的是不释放内存,则上面的代码 sn-p 不完整。我现在添加了
mysql_close(con);。 -
我的意思是
exit(1)之前的一个。 -
@geohei 对我来说看起来像是客户端选项。描述说:在 mysql_init() 之后和 mysql_connect() 之前调用 mysql_options()。具体来说,您应该查看选项
MYSQL_OPT_CONNECT_TIMEOUT。