рассмотрите следующий код c:
int main (int argc, char *argv[]) {
MYSQL *sql_handle;
fprintf(stdout,"initializing handle..\n");
sql_handle = mysql_init(sql_handle);
fprintf(stdout,"connecting to database..\n");
mysql_real_connect(sql_handle,NULL,NULL,
NULL,"test",0,NULL,0);
fprintf(stdout,"connection established\n");
mysql_close(sql_handle);
}
это дает следующий вывод
...
initializing handle..
connecting to database..
initializing handle..
connecting to database..
initializing handle..
connecting to database..
initializing handle..
connecting to database..
connection established
Error: Can't create UNIX socket (24)
Кажется, что у функции real_connect есть проблемы. демон работает точно это давно, так как я привык к c, так что это может быть глупым вопросом.
[обновление]
вот полный код
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #if defined __WIN32__ || _MSC_VER
5 #include "my_global.h"
6 #include "mysql.h"
7 #else
8 #include <mysql.h>
9 #endif
10
11 /* prototypes */
12 void connect(void);
13
14 /* sql handle */
15 MYSQL *sql_handle;
16
17 int main (int argc, char *argv[]) {
18 fprintf(stdout,"main..\n");
19 connect();
20 return EXIT_SUCCESS;
21
22 }
23 void connect(void){
24 fprintf(stdout,"initializing database handle..\n");
25 sql_handle = mysql_init(NULL);
26
27 fprintf(stdout,"connecting to database..\n");
28 mysql_real_connect(sql_handle,NULL,NULL,NULL,NULL,0,NULL,0);
29
30 fprintf(stdout,"closing connection..\n");
31 mysql_close(sql_handle);
32 }
этот код производит вывод:
...
connecting to database..
initializing database handle..
connecting to database..
initializing database handle..
connecting to database..
closing connection..
[1] 12914 segmentation fault (core dumped) ./db
Копирование тела функции соединения в основную и удаление функции соединения решает проблему. но это не решение.