Witam,
Mam problem z C++, a dokładnie biblioteką MySQL, podczas wykonywania zapytania wyskakuje błąd: Segmentation Fault.
Może pokażę kod:
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <mysql/mysql.h>
using namespace std;
int main(void) {
MYSQL *mysql;
MYSQL_RES *result;
MYSQL_ROW row;
if(mysql_init(mysql) == NULL) {
cout << "Nieudana inicjalizacja obiektu MySQL" << endl;
return 0;
}
if(!mysql_real_connect(mysql, "localhost", "root", "pass", "db", 0, NULL, 0)) {
cout << "Błąd NR: " << mysql_errno(mysql) << " O Treści: " << mysql_error(mysql) << endl;
return 0;
}
const char *sql_query = "SELECT `id`, `name`, `value` FROM `configs`";
if(mysql_query(mysql, sql_query)) {
cout << "Błąd NR: " << mysql_errno(mysql) << " O Treści: " << mysql_error(mysql) << endl;
} else {
result = mysql_store_result(mysql);
while((row = mysql_fetch_row(result)) != NULL) {
cout << "ID: " << row[0] << " Name: " << row[1] << " Value: " << row[2] << endl;
}
mysql_free_result(result);
}
mysql_close(mysql);
return 0;
}
Program dobrze kompiluję, kompilacja przebiega pomyślnie, kompiluje z opcją -Wall
Nie wiem gdzie tutaj leży problem, ponieważ próbowałem kilku metod z różnych źródeł tj książki, internet.
Tabela configs zawiera kilka rekordów, sprawa jest dość dziwna, jeżeli pobieram dane z tabeli gdzie jest jeden rekord to program poprawnie je wyciąga i wyświetla, lecz nawet po tym wyświetleniu dorzuca ten błąd, gdy zaś chodzi o tabele, gdzie znajduje się kilka rekordów, już nie wyświetla ani jednego, lecz od razu wyrzuca błąd.
Z góry dziękuję za pomoc!
Pozdrawiam