0

一部の単純な C++ コードで「セグメンテーション違反 (コア ダンプ)」エラーが発生します。変数結果を使用すると、エラーが発生します。この場合、この問題の原因は何ですか? 何かが範囲外になることは知っていますが、結果が範囲外になる可能性はありますか? データベースには 2 つの項目しかありません。

#include <iostream>
#include <boost/variant.hpp>
#include <mysql/mysql.h>
#include <mysql_connection.h>

using namespace std;

const char *server = "localhost";
const char *user = "XXXX";
const char *password = "XXXX";
const char *database = "XXXX";

int main()
{
    MYSQL *conn;
    MYSQL_RES *result;
    MYSQL_ROW row;

    int num_fields = 0;

    conn = mysql_init(NULL);
    mysql_real_connect(conn, server,user, password, database, 0, NULL, 0);

    mysql_query(conn, "SELECT * FROM `users` WHERE `id` = '5'");
    result = mysql_store_result(conn);

    num_fields = mysql_num_fields(result);

    while ((row = mysql_fetch_row(result)))
    {
       cout << "Spam ";
    }

    mysql_free_result(result);
    mysql_close(conn);
}

エラー:

Segmentation fault (core dumped)

Process returned 139 (0x8B)   execution time : 0.255 s
Press ENTER to continue.
4

1 に答える 1

0

解決策は、mysql が mysql.sock を見つけられるようにシンボリック リンクを作成することでした。

sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
于 2013-11-04T11:10:19.437 に答える