mysql_query() с простым запросом segfault
У меня есть этот супер простой код:
#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 ответ
Решение
Этот код работает:
#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