Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用c连接mysql数据库时出现分段错误_Mysql_C_Unix_Segmentation Fault - Fatal编程技术网

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

使用c连接mysql数据库时出现分段错误,mysql,c,unix,segmentation-fault,Mysql,C,Unix,Segmentation Fault,有人知道为什么在运行时,以下内容会导致分段错误吗 #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 =

有人知道为什么在运行时,以下内容会导致分段错误吗

#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);


}
结果如下:

MySQL client version : 5.5.31
Segmentation fault
请帮忙

分配的新对象未存储在代码中。因此,将NULL传递给
mysql\u real\u connect()

更改此行:

mysql_init(conn);
致:

或者更直接地说:

conn = mysql_init(NULL);
分配的新对象未存储在代码中。因此,将NULL传递给
mysql\u real\u connect()

更改此行:

mysql_init(conn);
致:

或者更直接地说:

conn = mysql_init(NULL);

您正在传递一个指向mysql\u real\u connect的
NULL
-指针。根据文档
mysql\u init
返回初始化的
mysql
对象(当传递
NULL
-指针时)。将代码更改为以下任一项以使用返回值:

conn = mysql_init(conn);
或者,让
mysql\u init
填充对象:

MYSQL conn; /* note that this isn't a pointer */
mysql_init(&conn);
...
mysql_real_connect(&conn, ...);

您正在传递一个指向mysql\u real\u connect的
NULL
-指针。根据文档
mysql\u init
返回初始化的
mysql
对象(当传递
NULL
-指针时)。将代码更改为以下任一项以使用返回值:

conn = mysql_init(conn);
或者,让
mysql\u init
填充对象:

MYSQL conn; /* note that this isn't a pointer */
mysql_init(&conn);
...
mysql_real_connect(&conn, ...);

您正在将空指针作为第一个参数传递给
mysql\u real\u connect
。我认为这是正确的。改为这样做
MYSQL-conn;mysql_init(&conn);mysql\u real\u connect(&conn、服务器、用户、密码、数据库、0、NULL、0)
您正在将一个空指针作为第一个参数传递给
mysql\u real\u connect
。我认为这是正确的。改为这样做
MYSQL-conn;mysql_init(&conn);mysql\u real\u connect(&conn、服务器、用户、密码、数据库、0、NULL、0)