Search code examples
c++libmysql

mysql_query() with simple query segfault


I have this super simple code :

#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;
}

When debugging, I get a segmentation fault on line 9 (mysql_query).

An idea ?


Solution

  • This code works :

    #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;
    }
    
    • Use a pointer for the MYSQLobject
    • Put the return of mysql_init(mysql) into mysql itself => Memory leaks
    • Don't use mysql_options