mysql服务器已经消失 - 无法修复它

mysql服务器已经消失 - 无法修复它

问题描述:

我想用C编写一个使用MYSQL C API的程序。我有一切工作,除了最近我试图连接到服务器时出现错误。无论我连接哪台服务器,它都会继续给我“mysql server has gone away。”。我的目标基本上是访问外部服务器并检索一些数据。这里是我到目前为止的代码: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

您是否检查了此页:? http://dev.mysql.com/doc/refman/5.0/en/gone-away.html – 2011-05-12 07:16:03

+0

'if(mysql_query(conn,...'或'if(!mysql_query(conn,...'? – 2011-05-12 07:21:43

我知道这是一个老问题,但我只是碰到它跑了,我想离开那些谁可能需要对未来的答案。

如果你收到错误“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。请记住,只执行一次重新连接尝试;如果服务器关闭或无法访问,查询仍可能失败。