我正在尝试使用MYSQL C API在C中编写程序。我有一切工作,除了最近我在尝试连接到服务器时遇到错误。无论我连接什么服务器,它都继续给我“mysql服务器已经消失。”。我的目标基本上是访问外部服务器并检索一些数据。这是我到目前为止的代码:
conn = mysql_init(NULL);
/* Connect to database */
if (!mysql_real_connect(conn, server,
user, password, database, 0, NULL, 0)) {
printf("%s",mysql_stat(conn));
fprintf(stderr, "%s\n", mysql_error(conn));
} else {
printf("works");
}
/* send SQL query */
if (mysql_query(conn, "show tables")) {
fprintf(stderr, "%s\n", mysql_error(conn));
}
res = mysql_use_result(conn);
/* output table name */
printf("MySQL Tables in mysql database:\n");
while ((row = mysql_fetch_row(res)) != NULL)
printf("%s \n", row[0]);
/* close connection */
mysql_free_result(res);
mysql_close(conn);
}
答案 0 :(得分:1)
我知道这是一个古老的问题,但我现在遇到了它,我想为将来可能需要它的人留下答案。
如果您收到错误“MySQL服务器已经消失”,则意味着客户端失去了与MySQL的连接。也许MySQL服务器已关闭,或者更有可能在一段时间后没有活动并且服务器关闭了连接。阅读MySQL文档的这一页,以便更好地理解错误:dev.mysql.com/doc/refman/5.7/en/gone-away.html
尝试将MYSQL_OPT_RECONNECT
选项设置为1
,看看是否能解决问题。设置后,客户端将尝试自动重新连接,如果它是关闭/超时连接,这应解决问题。有关相关文档,请参阅:dev.mysql.com/doc/refman/5.7/en/auto-reconnect.html。请记住,只执行一次重新连接尝试;如果服务器关闭或无法访问,查询仍可能失败。