Mariadb c 连接器 mysql_real_connect 失败错误 (2002) [HY000] "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"

Mariadb c connector mysql_real_connect fails Error(2002) [HY000] "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"

虽然我在 mysql_real_connect 函数中指定了端口,并且 unix 套接字名称为 NULL,但错误消息表明它正在尝试通过 unix sock default /tmp/mysql.sock.

void show_error(MYSQL *mysql)
{
  printf("Error(%d) [%s] \"%s\"", mysql_errno(mysql),
         mysql_sqlstate(mysql),
         mysql_error(mysql));
  mysql_close(mysql);
  exit(-1);
}


int main(int argc, char *argv[])
{
  MYSQL *mysql;
  const char *query;
  MYSQL_RES *result;

  mysql= mysql_init(NULL);
  if (!mysql_real_connect(mysql, "localhost", "user", "user_pw",
                          "schema_test", 3306, NULL, 0))
    show_error(mysql);

获取错误:错误 (2002) [HY000] "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"

如果我将主机用作 "localhost",mysql_real_connect 将忽略端口,而是尝试使用 unix sock default /tmp/mysql.sock 进行连接。 Here

所以在本地机器上,如果我们需要使用端口连接,我们可以将主机参数中的 127.0.0.1 传递给 mysql_real_connect 函数。