基本上,我正在尝试使用Connector C驱动程序连接到MySQL数据库。我在Linux系统上编写Netbeans中的代码。但这里有一个谜:我可以在调试模式下连接到我的数据库,但不能发布模式???我在Linux上使用Netbeans作为我的IDE,并使用项目属性下的下拉列表设置所有库并包含文件夹,因此它将属性应用于调试配置和发布配置,但是当我将它连接到数据库时在Debug中执行,但不是在Run中执行 - ???我简化了代码以向您显示实际的连接代码:
int readDB(void) {
MYSQL *mysql = NULL;
char *server = "localhost";
char *user = "root";
char *password = "";
char *database = "myDB";
int port = 3306;
mysql = mysql_init(mysql);
if (!mysql) {
puts("Init failed, out of memory?");
return EXIT_FAILURE;
} else {
puts("SUCCESS!\n");
}
if (!mysql_real_connect(mysql,server,user,password,database,port,NULL,0)) {
puts("Connect failed\n");
}
return 1;
}
因此,当我在Debug中运行它时,它会打印" SUCCESS"没有别的。当我运行它时,它打印" SUCCESS"接着是"连接失败"。我很茫然。这可能是IDE的问题吗?是否有另一个适用于C的IDE适用于Linux,我应该考虑哪些?或者我错过了一些非常明显的东西?
更新 调用mysql_error()显示
"无法通过socket' /tmp/mysql.sock'连接到本地MySQL服务器; (2)"
答案 0 :(得分:2)
在包括C在内的大多数语言中使用mysql客户端库时,如果主机名指定为localhost
,则客户端库将尝试通过unix域套接字进行连接。您可以通过将主机名指定为127.0.0.1
是的,他们是同一个but
如果unix_socket不为NULL,则字符串指定套接字或命名 管道使用。请注意,host参数确定了其类型 连接。
或者,您可以检查您的mysql配置,以找出服务器启动时套接字的创建位置,并将其用作unix_socket参数。
第三种方法是更改服务器配置以在/ tmp /
上创建套接字