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/
上创建套接字
基本上,我正在尝试使用 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
是的,它们是同一个 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/
上创建套接字