使用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)代码>