728x90
MYSQL *connection=NULL, conn;
MYSQL_RES *sql_result;
MYSQL_ROW sql_row;
int query_stat;
char name[12];
char address[80];
char tel[12];
char query[255];
mysql_init(&conn);
connection = mysql_real_connect(&conn, DB_HOST,
DB_USER, DB_PASS,
DB_NAME, 3306,
(char *)NULL, 0);
위와같이 MYSQL 형 conn 은 MYSQL 형 Socket 을 생성하기 때문에, 연결된 소켓을 connection 에 넘기면 mysql_close 시에 segmentation fault 가 난다.
#include <my_global.h>
#include <mysql.h>
int main(int argc, char **argv)
{
MYSQL *con = mysql_init(NULL);
if (con == NULL)
{
fprintf(stderr, "%s\n", mysql_error(con));
exit(1);
}
if (mysql_real_connect(con, "localhost", "root", "root_pswd",
NULL, 0, NULL, 0) == NULL)
{
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
exit(1);
}
if (mysql_query(con, "CREATE DATABASE testdb"))
{
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
exit(1);
}
mysql_close(con);
exit(0);
}
이와 같이 conn 은 1개여야 한다. 절대로 connection 같은것을 만들어 넘기지 않도록 한다.
'LINUX' 카테고리의 다른 글
C and CPP replace string for function (0) | 2018.07.12 |
---|---|
Random String generator in C (0) | 2018.07.04 |
Mod_Security2 Ajax Blocking Problem (0) | 2018.06.25 |
Curl in C usage (0) | 2018.06.24 |
Dynamic Library and Static Library (0) | 2018.06.24 |