1. В сообществе нашего форума Вконтакте создан раздел по продаже электронных компонентов.
    Каждый может продать в нем свои залежавшиеся детали. Подробности здесь.

Ошибка запроса к MySQL базе данных

Тема в разделе "Linux", создана пользователем radioengineer, 24 ноя 2016.

  1. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.489
    Симпатии:
    345
    Адрес:
    Алматы
    В общем непонятная для меня проблема, т.к. опыта программирования под Linux у меня немного.
    На #raspberrypi установлен mysql сервер и все соответствующие пакеты для разработки на C++ для #mysql
    Следующий код просто прерывает выполнение программы:
    PHP:
    void adsbpic::save_mysql(int index)
    {
        
    char sqlbuf[MAXLEN];                // Буфер для записи в БД
        
    int length;                            // Длина записи в символах

        
    length snprintf(sqlbufMAXLEN"INSERT INTO aircraftlog VALUES(now(),'%s','%s', %f, %f, %d, %.0f, %d, %d)"adsbpic::icaos[index], adsbpic::savedAid[index], adsbpic::alat[index], adsbpic::alon[index], adsbpic::aalt[index], adsbpic::aspeed[index], adsbpic::ah[index], adsbpic::avr[index]);
    #ifdef DEBUG
        
    printf("[MSQL] %s\n"sqlbuf);
        
    printf("%d\n"length);
    #endif //DEBUG

        
    if (mysql_real_query(mysqlsqlbuflength)) {
            
    printf("[MSQL] %s\n"mysql_error(mysql));
        }
    }
    В момент запроса mysql_real_query программа падает. Если выполнить аналогичный запрос, но с уже готовыми данными, то запись в базу происходит корректно:
    PHP:
    length snprintf(sqlbufMAXLEN"INSERT INTO aircraftlog VALUES(now(), '4844A4', 'KZR881', 43.320534, 76.969299, 4475, 233, 236, -36)");

        if (
    mysql_real_query(mysqlsqlbuflength)) {
            
    printf(mysql_error(mysql));
        }
    Помогите у кого есть опыт работы с mysql на #c++
     
    : raspberrypi, mysql, c++
  2. Morze

    Morze Гость

    Сообщения:
    4
    Симпатии:
    0
    Что выдает этот фрагмент когда?

    PHP:
    ...
    #ifdef DEBUG
        
    printf("[MSQL] %s\n"sqlbuf);
        
    printf("%d\n"length);
    #endif //DEBUG
    ...
  3. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.489
    Симпатии:
    345
    Адрес:
    Алматы
    Тоже, что я пишу потом готовой строкой "INSERT INTO aircraftlog VALUES(now(), '4844A4', 'KZR881', 43.320534, 76.969299, 4475, 233, 236, -36)"
    И длину строки в байтах.
  4. Morze

    Morze Гость

    Сообщения:
    4
    Симпатии:
    0
    И ошибок никаких не выдает при падении?
  5. radioengineer

    radioengineer Администратор Команда форума

    Сообщения:
    3.489
    Симпатии:
    345
    Адрес:
    Алматы
    Не выдает к сожалению.
  6. Morze

    Morze Гость

    Сообщения:
    4
    Симпатии:
    0
    Из документации

    Zeroif the statement was successful. Nonzeroif an error occurred.

    Наверно надо так попробовать выйти на ошибку

    if (mysql_real_query(mysql, sqlbuf, length) !=0 ) {
    }
  7. Morze

    Morze Гость

    Сообщения:
    4
    Симпатии:
    0
    Возможно еще стоит место ошибки обернуть в try-catch ?

Поделиться этой страницей