【问题标题】:unable to connect to mysql socket from C program无法从 C 程序连接到 mysql 套接字
【发布时间】:2013-02-04 05:50:06
【问题描述】:

我正在开发一个访问 mysql 的 C 程序。我的代码中有以下行:

sts = connect_to_server(&mysql, "localhost", "my_username",
            "my_password, "my_databasename");

当然是替换了实际值。我明白了:

无法连接到 MySQL:错误:无法连接到本地 MySQL 服务器 通过套接字'/tmp/mysql.sock' (2)

我见过其他类似的问题,答案通常是服务器宕机。在这种情况下,它不是。 PHPMyAdmin 可以正常访问服务器。

还有许多其他响应说要检查套接字文件。它存在

(/Applications/AMPPS/mysql/tmp/mysql.sock).

这可能与路径有关吗?它没有添加到“/temp/mysql.sock”的路径,因此找不到它?

我对unix知之甚少。我已经运行 OSX 将近 10 年了,但我几乎从未降到那个水平。

【问题讨论】:

  • /Applications/AMPPS/mysql/tmp/mysql.sock != /tmp/mysql.sock
  • 我知道。我没有指定缩写路径。图书馆例程是。我在问如何告诉它剩下的路径。我尝试了环境变量并将其添加到 PATH 本身。没有效果。
  • 重启 MySQL 服务器检查日志中是否有任何错误。
  • connect_to_server() 来自哪里?
  • 原来 connect_to_server() 没有将套接字名称传递给 mysql_real_connect()。编写它的人只打算使用端口,并且套接字名称为 NULL。呃。很抱歉给您带来困扰。我本来希望 mysql_real_connect 查看 CNF 文件,但显然它没有。

标签: mysql c macos sockets connection


【解决方案1】:

查看 mysql 配置文件(典型的 my.cnt 位于 /etc 下的某个位置)并调整 socket 的值以满足您的需要。

或者你可以将/tmp/mysql.sock链接到/Applications/AMPPS/mysql/tmp/mysql.sock

ln -s /Applications/AMPPS/mysql/tmp/mysql.sock /tmp/mysql.sock 

【讨论】:

    【解决方案2】:

    我认为加载错误的 my.ini。默认情况下,它会查看 /etc/my.ini,所以如果它存在,只需重命名或删除它。重启你的 MySQL 服务器。

    【讨论】:

      猜你喜欢
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      • 2018-01-03
      • 2011-12-07
      • 2020-09-28
      • 2018-03-12
      • 2022-01-01
      相关资源
      最近更新 更多