[C++] Biblioteka MySQL i Segmentation Fault

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
daw22
Piegowaty Guziec
Piegowaty Guziec
Posty: 2
Rejestracja: 15 mar 2008, 10:56
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86_64

[C++] Biblioteka MySQL i Segmentation Fault

Post autor: daw22 »

Witam,

Mam problem z C++, a dokładnie biblioteką MySQL, podczas wykonywania zapytania wyskakuje błąd: Segmentation Fault.

Może pokażę kod:

Kod: Zaznacz cały

#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
gril
Sędziwy Jeż
Sędziwy Jeż
Posty: 39
Rejestracja: 09 lis 2008, 00:47
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME

Odp: [C++] Biblioteka MySQL i Segmentation Fault

Post autor: gril »

google i szukasz programu valgrind :)
Awatar użytkownika
el.pescado
Zakręcona Traszka
Zakręcona Traszka
Posty: 734
Rejestracja: 26 maja 2005, 11:43
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [C++] Biblioteka MySQL i Segmentation Fault

Post autor: el.pescado »

Dokładnie, valgrind w tym wypadku pomoże.

Ewentualnie pomóc może google i dokumentacja używanych funkcji:
http://dev.mysql.com/doc/refman/5.0/en/mysql-init.html

EDIT:
P.S. Ewentualnie, szukasz w google informacji o programie gdb i debugujesz program. Gdb dokładnie wskaże miejsce występowania błędu.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 11 gości