0

我使用两台 OS X 机器来开发我的 Ruby on Rails 应用程序。我的桌面工作正常,我的笔记本电脑工作正常,直到几天前本地服务器在页面加载时运行时出现此错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

当我尝试从终端运行 mysql 时,我得到了同样的错误。

我检查了其他一些线程,但他们的解决方案都没有解决我的问题:

Ruby on Rails 3 无法通过 OSX 上的套接字“/tmp/mysql.sock”连接到本地 MySQL 服务器

无法通过套接字连接到本地 MySQL 服务器

那个家伙的最后一个链接似乎和我遇到了完全相同的问题,但是该页面上的答案对我没有帮助,因为我无法运行 mysql。我一直在网上看到这个问题,人们修复了它,因为他们的 .sock 文件位于错误的位置,所以我跑了

$ ln -s /var/lib/mysql/mysql.sock /tmp

尝试创建一个别名,但看起来 mysql.sock 在这两个地方都不存在。当我尝试运行时:

$ mysqladmin variables | grep socket

我收到了这个错误:

Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!

最后,我打开了不可见文件并环顾了我的计算机,在上述任何目录中都找不到 mysql.sock 文件或 mysql 文件夹。再一次,mysql 一周前在这台计算机上工作正常,现在由于某种原因莫名其妙地停止工作。

如何为这台计算机恢复或重新创建我的 .sock 文件?

4

2 回答 2

0

我猜你之前已经使用自制软件安装了 mysql。请注意,您的 mysqld 已经在运行

/usr/local/Cellar/mysql/5.5.24/bin/mysqld

但是,您当前的 mysql 命令链接到

/usr/local/bin/mysql

相反,它应该是

/usr/local/Cellar/mysql/5.5.24/bin/mysql

您可以尝试将别名添加到指向正确命令的 bashrc。

mysql在新窗口中运行之前尝试杀死所有其他 mysqld_safe 进程。它现在应该读取正确的 mysql sock 文件。

于 2012-07-08T03:51:47.197 回答
0

原因可能是您的 Gemfile 中指定的套接字路径可能是错误的。

首先,找到你的套接字文件:

mysqladmin variables | grep socket

对我来说,这给出了:

| socket  /var/run/mysqld/mysqld.sock 

然后,将此行添加/var/run/mysqld/mysqld.sock 到套接字字段中的 config/database.yml 中。请参阅以下示例

例子: socket: /var/run/mysqld/mysqld.sock

发展模式

development:
  adapter: mysql2
  host: localhost
  username: root
  password: xxxx
  database: xxxx
  socket: /var/run/mysqld/mysqld.sock #  this line

生产模式

production:
  adapter: mysql2
  host: localhost
  username: root
  password: xxxx
  database: xxxx
  socket: /var/run/mysqld/mysqld.sock  #  this line

测试模式

test:
  adapter: mysql2
  host: localhost
  username: root
  password: xxxx
  database: xxxx
  socket: /var/run/mysqld/mysqld.sock  #  this line
于 2015-05-28T18:23:34.057 回答