mysql_errno总是返回0

时间:2011-08-16 23:57:15

标签: mysql c

我正在尝试使用错误的用户或密码连接到服务器并且正如预期的那样失败但是mysql_errno总是返回0.我的mysql安装有问题吗?。

编辑:我正在使用c程序进行连接。

int main(int argc, char *argv[]) {
    MYSQL my_connection;
    mysql_init(&my_connection);
    if (mysql_real_connect(
            &my_connection,
            "localhost",
            "rick",
            "I do not know",
            "foo", 0, NULL, 0)) {
        printf("Connection success\n");
        mysql_close(&my_connection);
    } else {
        fprintf(stderr, "Connection failed\n");
        if (mysql_errno(&my_connection)) {
            fprintf(stderr, "Connection error %d: %s\n",
                    mysql_errno(&my_connection), mysql_error(&my_connection));
        }
    }
    return EXIT_SUCCESS;
}

在书中输出应该说错误1045:
在我的情况下,它是0,只打印连接失败。

1 个答案:

答案 0 :(得分:1)

mysql_errno()仅报告来自有效连接的错误。

错误编号来自实际数据库。如何在没有连接的情况下首先检索这些?

您会注意到API example,他们不会为连接失败的错误编号而烦恼

MYSQL mysql;

mysql_init(&mysql);
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name");
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
    fprintf(stderr, "Failed to connect to database: Error: %s\n",
          mysql_error(&mysql));
}