【问题标题】:Error 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)错误 2002:无法通过套接字“/tmp/mysql.sock”连接到本地 MySQL 服务器 (2)
【发布时间】:2011-05-13 12:57:21
【问题描述】:

我使用的是 Ubuntu 11.04。一切正常 PHP、PHPMYADMIN、手动登录 MySQL 等。

我编写了一个使用 MySQL 的 C 应用程序。现在,当我启动此应用程序时,我收到上述错误。我试图通过将原始文件链接到 /tmp/ 文件夹(ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock)来防止这种情况发生,但是,过了一会儿我开始收到此错误再次 - 因为我的链接已被删除,这令人沮丧。

我需要做什么才能完成这项工作?

【问题讨论】:

    标签: mysql c


    【解决方案1】:

    MySQL 库的编译默认为/tmp/mysql.sock。服务器以/var/run/mysqld/mysql.sock 启动,而您的$HOME/.my.cnf 未在[client] 部分反映此值。

    如果在没有有效 $HOME 的情况下运行,您可能需要将 mysql_options 与 MYSQL_READ_DEFAULT_FILE 一起使用。

    【讨论】:

    • 谢谢梅尔,我确实在没有有效 $HOME 变量的情况下运行它。我在 mysql_init 之后在我的 C 应用程序中尝试了 mysql_options(conn, MYSQL_READ_DEFAULT_FILE, "/etc/mysql/my.cnf") 但似乎什么也没发生。有什么想法吗?
    • @frank 该文件需要包含一个 [client] 部分,其中socket = /var/run/mysqld/mysql.sock
    • 它确实有一个指定端口和套接字的客户端部分?!
    • 我也试过直接在mysql_real_connect中指定socket
    • 它似乎没有读取文件,因为错误仍然指向/tmp/mysql.sock
    【解决方案2】:

    尝试将文件链接到 /tmp/ 以外的其他位置并从那里使用它

    【讨论】:

    • 这并不能解决他的代码连接错误套接字的问题。
    猜你喜欢
    • 2019-02-28
    • 2012-06-21
    • 2013-03-05
    • 1970-01-01
    • 2014-03-28
    • 2011-12-12
    相关资源
    最近更新 更多