Linux上的Netbeans连接到C中的MySQL数据库

Linux上的Netbeans连接到C中的MySQL数据库,mysql,c,linux,netbeans,connector,Mysql,C,Linux,Netbeans,Connector,基本上,我正在尝试使用Connector C drivers for MySQL连接到MySQL数据库。我正在Linux系统上用Netbeans编写代码。但这里有一个谜:我可以在调试模式下连接到我的数据库,但不能在发布模式下连接???我在Linux上使用Netbeans作为我的IDE,我使用项目属性下的下拉菜单设置了所有库并包含文件夹,因此它将属性应用于调试配置和发布配置,但当我在调试中执行时,它将连接到数据库,但当我在运行中执行时,它不会连接到数据库???我简化了代码以显示实际的连接代码: i

基本上,我正在尝试使用Connector C drivers for MySQL连接到MySQL数据库。我正在Linux系统上用Netbeans编写代码。但这里有一个谜:我可以在调试模式下连接到我的数据库,但不能在发布模式下连接???我在Linux上使用Netbeans作为我的IDE,我使用项目属性下的下拉菜单设置了所有库并包含文件夹,因此它将属性应用于调试配置和发布配置,但当我在调试中执行时,它将连接到数据库,但当我在运行中执行时,它不会连接到数据库???我简化了代码以显示实际的连接代码:

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的问题吗?在Linux上,还有一个IDE能很好地工作吗?还是我遗漏了一些很明显的东西

更新: 调用mysql_error()时出现错误

“无法通过套接字'/tmp/MySQL.sock'连接到本地MySQL服务器” (2) "


在大多数语言(包括C)中使用mysql客户端库时,如果主机名指定为
localhost
,客户端库将尝试通过unix域套接字进行连接。通过将主机名指定为
127.0.0.1

是的,它们是一样的

如果unix_socket不为NULL,则字符串将指定套接字或指定的名称 要使用的管道。请注意,主机参数决定了主机的类型 连接

或者,您可以检查mysql配置,找出服务器启动时套接字的创建位置,并将其用作unix_socket参数


第三种选择是更改服务器配置,在/tmp/

上创建套接字,为什么不使用明显的
put(mysql_error(mysql))哈哈!!因为您要处理的是一个C/MySQL noob,而且显然不在菜单上;)但你的建议确实引起了一些新的阴谋。错误打印为“无法通过套接字'/tmp/MySQL.sock'(2)连接到本地MySQL服务器”。看来我的插座有问题。让我知道如果你知道这方面的任何事情,而我挖掘谷歌机器。谢谢!e4c5,你是一个可证实的天才!我会努力寻找,很可能不会找到这个。我是一个windows用户,正在将我的数据库和后端处理转换为Linux以节省资金,我的脑袋一直在动。我非常感谢你抽出时间来帮助我!127.0.0.1是梅的答案。我很高兴能帮上忙。祝你的项目一切顺利。回答得好!!!我不知道127.0.0.1和localhost被mysqlload以不同的方式解释,事实证明它不仅仅适用于op@KeineLust