2012-10-17 2 views
3

Ceci est le code que j'essaie de lancer. Il compile bien, et a bien fonctionné jusqu'à hier.Pourquoi ai-je une erreur de segmentation (core dumped)?

#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); 
    mysql_real_connect(conn, "hostname", "username", "password", "database_name", 0, NULL, 0); 

    mysql_query(conn, "SELECT * FROM tabletest"); 
    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); 

} 

Notez que les paramètres de mysql_real_connect() sont ici générique de la vie privée, mais comme je l'ai dit, ça a marché hier. Lorsque je tente d'exécuter le code après avoir compilé avec succès, je reçois:

Segmentation fault (core dumped) 
+2

"Ça a marché hier" n'est pas une bonne excuse pour "Je ne vérifie pas les résultats de mes appels API mysql". Ajoutez une vérification d'erreur et affinez votre recherche à l'appel de la fonction incriminée. – paddy

+0

est-ce la trace d'erreur complète? –

+0

Et le backtrace? –

Répondre

4

Paddy a souligné le principal problème, je ne l'ai pas Contrôle d'erreur. Après la vérification des erreurs, j'ai découvert que je ne pouvoir accéder à mon serveur distant et devenais

Error 1045: Access denied for user 'username'@'ip' (using password: YES) 

Je me suis alors rendu compte que l'adresse IP de mon ordinateur a changé après l'avoir allumé. Je n'ai jamais su cela. J'ai donc dû retourner dans cPanel, et ajouter ma "nouvelle" adresse IP à la liste d'accès distant pour MySQL, et cela fonctionne. Maintenant, le problème est de savoir comment mon adresse IP peut rester statique.

La morale de l'histoire est de toujours gérer les erreurs.

Questions connexes