【问题标题】:Why am I getting a segmentation fault (core dumped)?为什么会出现分段错误(核心转储)?
【发布时间】:2012-10-17 09:31:04
【问题描述】:

这是我要运行的代码。它编译得很好,直到昨天都运行良好。

#include <my_global.h>
#include <mysql.h>

int main(int argc, char **argv)
{

  MYSQL *conn;
  MYSQL_RES *result;
  MYSQL_ROW row;
  int num_fields;
  int i;

  conn = mysql_init(NULL);
  mysql_real_connect(conn, "hostname", "username", "password", "database_name", 0, NULL, 0);

  mysql_query(conn, "SELECT * FROM tabletest");
  result = mysql_store_result(conn);

  num_fields = mysql_num_fields(result);

  while ((row = mysql_fetch_row(result)))
  {
      for(i = 0; i < num_fields; i++)
      {
          printf("%s ", row[i] ? row[i] : "NULL");
      }
      printf("\n");
  }

  mysql_free_result(result);
  mysql_close(conn);

}

请注意,mysql_real_connect() 的参数在这里是通用的,以保护隐私,但就像我说的,它昨天起作用了。当我编译成功后尝试运行代码时,我得到:

Segmentation fault (core dumped)

【问题讨论】:

  • “它昨天工作”不是“我不检查我的 mysql API 调用的结果”的好借口。添加错误检查,并将搜索范围缩小到有问题的函数调用。
  • 这是完整的错误跟踪吗?
  • @paddy 我不知道如何检查。以及如何缩小搜索范围,除了运行时的那一行之外,我没有更多信息。谢谢。
  • @IonutHulub 是的,没有别的。
  • @paddy 你说得对,我现在正在检查错误,事情变得更有意义了。就我而言,这是一个可怕的错误。谢谢。

标签: mysql c


【解决方案1】:

Paddy指出了关键问题,我没有查错。经过错误检查,我发现我没有被授予访问我的远程服务器的权限并且正在获取

Error 1045: Access denied for user 'username'@'ip' (using password: YES)

然后我意识到我的电脑在开机后IP地址发生了变化。我从来不知道这发生了。所以我不得不回到cPanel,将我的“新”IP地址添加到MySQL的远程访问列表中,它就可以工作了。现在的问题是找出我的 IP 地址如何保持静态。

故事的寓意是始终处理错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多