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

Netbeans on Linux to Connect to a MySQL Database in C

基本上,我正在尝试使用 MySQL 的连接器 C 驱动程序连接到 MySQL 数据库。我正在 Linux 系统上用 Netbeans 编写代码。但这是个谜:我可以在调试模式下连接到我的数据库,但不能在发布模式下连接???我在 Linux 上使用 Netbeans 作为我的 IDE,我使用项目属性下的下拉菜单设置所有库和包含文件夹,以便将属性应用于调试配置和发布配置,但是当我在 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" 而没有其他。当我 运行 它时,它打印 "SUCCESS" 后跟 "Connect failed"。我很茫然。这可能是 IDE 的问题吗?是否有另一个适用于 Linux 的适用于 C 的 IDE 我应该考虑?还是我遗漏了一些很明显的东西?

更新: 调用 mysql_error() 显示

"Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"

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

来使用 TCP/IP 强制连接

是的,它们是同一个 but

If unix_socket is not NULL, the string specifies the socket or named pipe to use. Note that the host parameter determines the type of the connection.

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

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

上创建套接字