Segmentation fault 郁闷
以下程序是用mysql c api计算t_flow_data表项的记录数:
编译命令行如下:
gcc -I /usr/local/mysql/include/mysql -c connect_database.c
gcc -L /usr/local/mysql/lib/mysql/ -lmysqlclient -lm -o connect_database conne
ct_database.o
执行时,结果正确选择出来了,但是出现Segmentation fault:
Connect Succ
The result is 4999999
Segmentation fault
到底是怎么回事啊?
#include <stdlib.h>
#include <stdio.h>
#include "/usr/local/mysql/include/mysql/mysql.h"
#include "configuration.inc.h"
/*
* 函数介绍:该函数负责数据库的连接
* 输入参数:
* 输出参数:
* 返回值 :成功时返回连接标识,否则返回NULL
* 全局变量:
* 调用模块:
* 抛出异常:错误时输出错误信息
*/
int Connect_DataBase(MYSQL *db_connect)
{
mysql_init(db_connect);
if (!mysql_real_connect(db_connect , HOST , DBUSER , DBPASSWD , DBNAME , 0 ,
NULL ,0))
{
fprintf(stderr , "Failed to Connect DataBase , Error:%s\n" , mysql_error(db_
connect));
return 0;
}
else
return 1;
}
int main()
{
MYSQL *mysql;
MYSQL_RES *mysql_store;
MYSQL_ROW row;
if (Connect_DataBase(mysql))/* Connect DataBase*/
{
printf("Connect Succ\n");
}
else
exit(-1);
mysql_query(mysql , "select count(*) from t_flow_data");
mysql_store = mysql_store_result(mysql);
row = mysql_fetch_row(mysql_store);
printf("The result is %s\n" , row[0]);
mysql_free_result(mysql_store);
mysql_close(mysql);
return 1;
}