Keine Textausgabe bei mysql_error



  • Hallo,

    ich versuche mich mit einer MySQL Datenbank zu verbinden. Leider funktionert das nicht. Um genauer zu erkennen woran es liegt habe ich versucht den Fehler auszugeben. Allerdings zeigt mir mysql_error überhaupt nichts an.

    Der Compiler ist GCC unter Linux.

    #include <stdio.h>
    #include <stdlib.h>
    
    #include <my_global.h>
    #include <mysql.h>
    
    int main(int argc, char **argv)
    {
    
      MYSQL *conn;
      MYSQL_RES *result;
      MYSQL_ROW row;
      int num_fields;
      int i;
    
      conn = mysql_init(NULL);
    
      if (conn == NULL) {
          printf("1 Error %u: %s\n", mysql_errno(conn), mysql_error(conn));
          exit(1);
      }
    
      if (mysql_real_connect(conn, "127.0.0.1", "user", "passwort", testdatenbank, 3306, NULL, 0)) {
          printf("2 Error %u: %s\n", mysql_errno(conn), mysql_error(conn));
          exit(1);
      }
    
      if (mysql_query(conn, "select * from test_table")) {
          printf("3 Error %u: %s\n", mysql_errno(conn), mysql_error(conn));
          exit(1);
      }
    
      result = mysql_store_result(conn);
    
      num_fields = mysql_num_fields(result);
    
      while ((row = mysql_fetch_row(result)))
      {
          for(i = 0; i < num_fields; i++)
          {
              printf("%s ", row[i] ? row[i] : "NULL");
          }
          printf("\n");
      }
    
      mysql_free_result(result);
      mysql_close(conn);
    
    }
    

    Die Ausgabe sieht so aus

    2 Error 0:
    

    Ich bin der meinung hier fehlt ein Text, der beschreibt wo das Problem liegt. Wie bekomme ich mysql_error dazu den Text auszugeben. Habe ich etwas falsch gemacht?

    Viele Grüße
    Meike



  • Von meinen Freund GOOGLE zum Stichwort mysql_real_connect:

    Rückgabewerte

    Ein MYSQL*-Verbindungs-Handle, wenn die Verbindung erfolgreich eingerichtet wurde, und NULL, wenn der Verbindungsversuch keinen Erfolg hatte

    Du solltest also
    aus

    if (mysql_real_connect
    

    mal

    if (!mysql_real_connect
    

    machen.



  • Hallo Belli,

    genau das war der Fehler. Danke!

    Ich hab zwar auf http://dev.mysql.com geschaut, aber den eigenen Fehler finden ist immer schwer. Das ist wie in Mathe. Den eigenen Fehler findet man oft bei mehrmaligem nachrechnen nicht. Man muss neu rechnen damit man drauf kommt was falsch ist oder jemanden drüber schauen lassen 😉

    Viele Grüße
    Meike


Anmelden zum Antworten