考虑下面的C代码:循环mysql_real_connect还是什么
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
复制连接功能的身体进入主以及去除所述连接 - 功能解决了这个问题。但这不是一个解决方案。
[Hmmmmmmmm](http://dev.mysql.com/doc/refman/5.0/en/mysql-init.html)...尝试'sql_handle = mysql_init(NULL);' – pmg 2011-05-31 14:10:15
我无法看到这可能会产生一个循环。 – 2011-05-31 14:33:51
我很确定,这不是真正的代码。即使'mysql_real_connect'在内部做了一些循环(我认为它没有这样做),连接到数据库被写了好几次。 – 2011-05-31 14:35:11