简体   繁体   English

简单SQL代码上的分段错误(核心已转储)

[英]Segmentation fault (core dumped) on simple SQL code

I get a “Segmentation fault (core dumped)” error on some simple C++ code. 我在一些简单的C ++代码上收到“分段错误(内核已转储)”错误。 The error will accure when I use the variable result. 当我使用变量结果时,错误将累积。 What can cause this problem in this case? 在这种情况下什么会导致此问题? I know that something goes out of range, but how is it possible that result does? 我知道有些超出范围,但结果怎么可能呢? There are only 2 items in the database. 数据库中只有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);
}

The error: 错误:

Segmentation fault (core dumped)

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

解决方案是建立一个符号链接,以便mysql可以找到mysql.sock:

sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM