虽然我在mysql_real_connect函数中指定了端口,并且unix套接字名称为NULL,但错误信息显示它正试图通过unix sock默认的tmpmysql.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);
得到错误信息。Error(2002) [HY000] "Can't connect to local MySQL server through socket 'tmpmysql.sock'(2)"。
如果我使用Host作为 "localhost",mysql_real_connect忽略了端口,而是试图通过unix sock默认的tmpmysql.sock进行连接。这里
所以在本地机器上,如果我们需要使用端口连接,我们可以在host参数中传递127.0.0.1给mysql_real_connect函数。