mysql_query () с простым запросом segfault - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть такой супер простой код:

#include <winsock.h>
#include <mysql.h>

int main() {
    MYSQL mysql;
    mysql_init(&mysql);
    mysql_options(&mysql, MYSQL_READ_DEFAULT_GROUP, "option");
    if (mysql_real_connect(&mysql, "localhost", "root", "pass", "data", 0, NULL, 0)) {
        mysql_query(&mysql, "SELECT * FROM versions");
        mysql_close(&mysql);
    }

    else {
        return 1;
    }

    return 0;
}

При отладке я получаю ошибку сегментации в строке 9 (mysql_query).

Идея?

1 Ответ

0 голосов
/ 20 февраля 2019

Этот код работает:

#include <winsock.h>
#include <mysql.h>

int main() {
    MYSQL* mysql = new MYSQL;
    mysql_init(mysql);
    if (mysql_real_connect(mysql, "localhost", "root", "pass", "data", 0, NULL, 0)) {
        mysql_query(mysql, "SELECT * FROM versions");
        mysql_close(mysql);
    }

    else {
        return 1;
    }

    return 0;
}
  • Используйте указатель для MYSQL объекта
  • Поместите возврат mysql_init(mysql) в mysql сам => Утечки памяти
  • Не использовать mysql_options
...