基本上,我试图连接到一个MySQL数据库使用MySQL的连接器C驱动程序。 我正在Linux系统上的Netbeans中编写代码。 但是这里是个谜题:我可以在debugging模式下连接到我的数据库,但不能释放模式? 我在Linux上使用Netbeans作为我的IDE,并使用项目属性下的下拉菜单设置所有库和包含文件夹,因此它将这些属性应用于“debuggingconfiguration”和“发布configuration”,但是当我将它连接到数据库时在Debug中执行,但不是当我在运行时执行 – ??? 我简化了代码以显示实际的连接代码:
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”而不是其他的东西。 当我运行它,它打印“成功”,然后“连接失败”。 我很茫然。 这可能是IDE的问题吗? 有没有另一个C的IDE在Linux上运行良好,我应该考虑? 还是我错过了一些相当明显的东西?
更新:调用mysql_error()显示
“无法通过套接字连接到本地MySQL服务器”/tmp/mysql.sock“(2)”
在包括C在内的大多数语言中使用mysql客户端库时,如果主机名被指定为localhost
则客户端库将尝试通过unix域套接字进行连接。 您可以通过将主机名指定为127.0.0.1
来强制使用TCP / IP进行连接
是的,他们是一样的, 但是
如果unix_socket不是NULL,则字符串指定要使用的套接字或命名管道。 请注意,主机参数决定了连接的类型。
或者,您可以检查您的mysql配置,找出服务器启动时创建套接字的位置,并将其用作unix_socket参数。
第三种方法是改变你的服务器配置,在/ tmp /