MySql + Qt - błędy przy dodawaniu/usuwaniu kolumny

0

Mam pewien problem związany z usuwaniem i dodawaniem kolumny w istniejącej już tabeli.

Metoda wykorzystywana do tego celu wygląda tak:

 //QString query = "ALTER TABLE tab DROP COLUMN col";
bool DBOperationsC::ADD_Drop(QString query)
{
    QSqlQuery Query(query);

    if (!Query.exec())
    {
        qDebug() << Query.lastError().text();

        int code = Query.lastError().number();
        qDebug() << code;
        emit Msg(code);
        return false;
    }
    return true;
}

Jak wygląda problem?
Otóż za każdym razem jak wywołam usuwanie kolumny to otrzymuje:

"Can't DROP 'col'; check that column/key exists QMYSQL: Unable to execute query"
error code: 1091

a dla dodawania:

"Duplicate column name 'col' QMYSQL: Unable to execute query"
error code: 1060

Z tym, że oba te polecenia są wykonywane przez serwer MySql ponieważ wynik końcowy jest tak jak powinien być ..

O co tutaj chodzi ? Co może być nie tak ? (znalazłem w sieci też taką hipotezę, że jest to problem po stronie bazy danych i można zignorować te błedy.. ale nie wiem ile w tym prawdy..).

0

EDIT: Dodam jeszcze, że te same polecenia wykonywane bezpośrednio na serwerze MySql (poprzez workbench'a) nie zwracały żadnego błędu.

0

Tworzysz obiekt query z przekazanym od razu stringiem zawierającym zapytanie. Taki obiekt od razu przy tworzeniu odpala zapytanie, natomiast metoda exec() służy do odpalania zapytań utworzonych za pomocą prepare(). Przyjrzyj się pod kątem tego dokumentacji - na pewno Ci się rozjaśni ten przypadek i przyda się na przyszłość.

0

@Hostel - podziękował. Rzeczywiście wykorzystanie prepare() zadziałało tak jak powinno :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1