【发布时间】:2009-07-16 07:10:32
【问题描述】:
使用带有 Mysql C API 的 C 程序连接到数据库并且启动成功但尝试执行 SELECT 、INSERT 操作它会引发错误“MySQL 服务器已消失” on我的 VPS 服务器,但在本地也可以正常工作。
VPS Server Mysql Server 版本为 : 5.0.81-community MySQL 社区 版(GPL)。 wait_timeout 值:28800
本机Mysql Server版本为 : 5.0.77 源码分发。
但是使用 Php 访问同一个数据库它可以正常工作,没有任何问题(本地和 vps 服务器)只有在使用 Mysql C API 调用时才会发生。
int fetch_information_from_tbl()
{
MYSQL_RES *result;
MYSQL_ROW row;
char query_def1[100];
unsigned int num_fields;
int tblid;
/***EDITED FOR MORE INFORMATION START ***/
// Tried to ping and set reconnection still the same error
/* try a ping */
if (mysql_ping(mysql)) {
fprintf(stderr, "Cannot ping database: Error: %s\n",mysql_error(mysql));
}
my_bool reconnect = 0;
if(mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect)){
fprintf(stderr, "Mysql Option Error: %s\n",mysql_error(mysql));
}
/***EDITED FOR MORE INFORMATION ENDS***/
sprintf(query_def1, "SELECT tblid FROM test_table");
if (mysql_query(mysql, query_def1)) {
fprintf(stderr, "%s\n", mysql_error(mysql));
exit(1);
}
result = mysql_store_result(mysql);
num_fields = mysql_num_fields(result);
row = mysql_fetch_row(result);
if (row)
{
tblid = atoi(row[0]);
printf("Fetched Table ID is: %d\n",tblid)
}
}
执行这样的mysql查询是正确的方法还是建议更好的方法来做到这一点? 执行 SELECT OPERATION 时出现的这个错误会是什么情况?提前致谢。
【问题讨论】: