当前位置:  技术问答>linux和unix

mysql Segmentation fault的问题,求教

    来源: 互联网  发布时间:2016-11-10

    本文导语:  int UserByEmail(char str1[],int client) {     char buffer[500];      MYSQL db;/*connector*/      MYSQL_RES * result;/*result buffer*/      MYSQL_ROW row;/*one row of the result*/      int i;      /*初始化mysql*/      if(mysql_init(&db)==NULL)      { ...

int UserByEmail(char str1[],int client)
{
    char buffer[500];
     MYSQL db;/*connector*/
     MYSQL_RES * result;/*result buffer*/
     MYSQL_ROW row;/*one row of the result*/
     int i;
     /*初始化mysql*/
     if(mysql_init(&db)==NULL)
     {
       fprintf(stderr,"Fail to initialize the db.n");
       return;
     }
     /*连接数据库*/
    char host[32] = "localhost";
    char user[32] = "mysql";
    char passwd[38] = "passwd";
    char dbc[32] = "mysql";
    char getDate[1024];
    char domain[2000];
    char s[2000];
    memset(getDate,0,1024);
     if (NULL == (mysql_real_connect(&db,host,user,passwd,dbc,0,NULL,0)))
    {
       fprintf(stderr,"Connect to mysql Error:%s!",mysql_error(&db));
       return;
    }
        char str[2000];
char str3[]="'";
memset(str,0,2000);
char Where_SQL[]="select * from users where email='";

strcat(str,Where_SQL);
strcat(str,str1);
strcat(str,str3);
printf("str=%sn",str);
     if(mysql_query(&db,str)!= 0)    
     {  // select();
       fprintf(stderr,"Fail to query the db for information.n");
       return;
     }
     /*获得查询结果*/
result = mysql_store_result(&db);
if(result)
{
int num_fields;
num_fields = mysql_num_rows(result);
if(num_fields>0)
{
printf("get the resultn");
}
else
{
                        fprintf(stderr,"Fail to get the result.n");
return;
}
}
else
{
       fprintf(stderr,"Fail to get the result.n");
return;
}

struct json_object *dal_data;
dal_data = json_object_new_object();

     while((row=mysql_fetch_row(result)) != NULL)/*fetching each row*/
     {
       puts("================================================");
       printf("id: %sn",row[0]);
       printf("email: %sn",row[1]);
       printf("password: %sn",row[2]);
       printf("status: %sn",row[3]);
       puts("================================================"); 

json_object_object_add(dal_data, "id", json_object_new_string(row[0]));
json_object_object_add(dal_data, "email", json_object_new_string(row[1]));
json_object_object_add(dal_data, "password", json_object_new_string(row[2]));
json_object_object_add(dal_data, "status", json_object_new_string(row[3]));

memset(buffer,0,500);
printf("necho json_encode(dal_data);nn%snn",json_object_to_json_string(dal_data));
strcat(buffer,json_object_to_json_string(dal_data));

strcat(buffer,"n");
ssl_write(client,buffer);//这是个发送数据的函数调用
  }
json_object_put(dal_data);
     mysql_free_result(result);
     mysql_close(&db);/////////////////////////////////////////////////////////////////////////////
}

上边是C-mysql一个api,程序在本机跑了好几天都没问题,但是拿到线上测试的时候发现程序跑到mysql_close(&db);(上边已经标出)这一句的时候就断了,错误提示:Segmentation fault
上线之后程序就改了个mysql的user和passwd,其他的都没改,本机跑没出现过问题
一上线就断了,把mysql_close(&db);这句注释掉之后程序就没Segmentation fault的错误提示了,但是mysql又不能不关;
我查过,网上说是 result初始化的问题,可是我初始化了,本机怎么就没问题?
个人觉得是不是线上环境和本机环境的差别?
向各位求教~~

|

|
帮楼主顶贴哦

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c++中关于#include <mysql/mysql.h>的问题?
  • linux 下mysql 以root和普通用户进入mysql的问题
  • 我的是mandrake8.2,已经安装了mysql,请教一个菜鸟问题,怎么操作才能进入mysql,然后建库!
  • 在线请教:linux下用MySQL C API 连接MySQL 4.1.12出现的连接问题,提示升级客户端!!!!!!
  • radius mysql问题 rlm_sql_mysql.so 这个文件我怎么都没有找到
  • mysql安装问题菜鸟问题
  • Apache 1.3.22/Tomcat 4.0.4/Mysql 3.23/mm.mysql.jdbc-2.0pre5的中文乱码问题
  • apache+tomcat3.2.3+mm.mysql+mysql3.22+jdk1.3.1中文问题,急!!!!分不够还可以再加..
  • java 和 mysql的问题?初级问题!
  • mysql4.0升级到mysql5(4.1),解决字符集问题
  • MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)
  • 关于mysql的问题
  • php连接mysql二种方法 mysql乱码问题
  • MySQL的用户问题,菜鸟提问
  • 重新restore了mysql到另一台机器上后mysql 编码问题报错
  • Centos 6.3将Mysql 5.1.61升级为mysql 5.6.19遇到的问题及解决方式
  • Cygwin连接MySQL问题
  • 请教mysql的问题
  • 关于linux中MySql的安装问题
  • Linux9.0下安装MySQL的问题(在线等)急!
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • MySQL Workbench的下载安装与使用教程


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3