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

时间:2017-02-01 05:47:40

标签: mysql c linux netbeans connector

基本上,我正在尝试使用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)"

1 个答案:

答案 0 :(得分:2)

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

来强制使用TCP / IP进行连接

是的,他们是同一个but

  

如果unix_socket不为NULL,则字符串指定套接字或命名   管道使用。请注意,host参数确定了其类型   连接。

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

第三种方法是更改​​服务器配置以在/ tmp /

上创建套接字