首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用c连接mysql数据库时出现分段错误

使用c连接mysql数据库时出现分段错误
EN

Stack Overflow用户
提问于 2013-07-07 05:43:30
回答 2查看 4.1K关注 0票数 0

有人知道为什么下面的代码在运行时会导致分段错误吗?

代码语言:javascript
复制
#include <mysql.h>
#include <stdio.h>
#include <stdlib.h>

void main(void)
{
    printf("MySQL client version : %s\n", mysql_get_client_info());
    MYSQL *conn=NULL;
    mysql_init(conn);
    char *server = "localhost";
    char *user = "root";
    char *password = "pass";
    char *database = "weather";
    char *table ="room_temp";
    char *tst_qry="INSERT INTO `weather`.`room_temp` (`idx`, `date`, `temperature`) VALUES (NULL, CURRENT_TIMESTAMP, '10')";

        mysql_real_connect(conn, server, user, password, database, 0, NULL, 0);


}

我遵守了如下规定:

代码语言:javascript
复制
gcc -o mysql $(mysql_config --cflags) mysql.c $(mysql_config --libs)

输出结果如下:

代码语言:javascript
复制
MySQL client version : 5.5.31
Segmentation fault

请帮帮我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-07 05:53:23

您正在向mysql_real_connect传递NULL-pointer。根据文档,mysql_init将返回一个初始化的MYSQL对象(当传递给它一个NULL-pointer时)。将您的代码更改为以下代码以使用返回值:

代码语言:javascript
复制
conn = mysql_init(conn);

或者这样,让mysql_init填充对象:

代码语言:javascript
复制
MYSQL conn; /* note that this isn't a pointer */
mysql_init(&conn);
...
mysql_real_connect(&conn, ...);
票数 1
EN

Stack Overflow用户

发布于 2013-07-07 05:52:15

分配的新对象不会存储在代码中。因此,您要将NULL传递给mysql_real_connect()

更改此行:

代码语言:javascript
复制
mysql_init(conn);

至:

代码语言:javascript
复制
conn = mysql_init(conn);

或者更直接地说:

代码语言:javascript
复制
conn = mysql_init(NULL);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17507415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档