2011-08-16 192 views
0

我試圖用錯誤的用戶或密碼連接到服務器,並且如預期的那樣失敗,但mysql_errno總是返回0.是否有我的mysql安裝有問題?mysql_errno總是返回0

編輯:我正在使用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

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)); 
} 
+0

我試圖實現從Linux書的例子。 – dasman

+0

@dasman也許你應該更新你的問題與本書的例子和/或你的代碼 – Phil