OS X Lion上的RoR应用程序缺少mysql.sock

时间:2012-07-04 22:59:10

标签: mysql ruby-on-rails-3 osx-lion

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

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

当我尝试从终端运行mysql时出现同样的错误。

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

Ruby on Rails 3 Can't connect to local MySQL server through socket '/tmp/mysql.sock' on OSX

Can't connect to local MySQL server through socket

这家伙的最后一个链接似乎与我有完全相同的问题,但该页面上的答案对我没有帮助,因为我无法运行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文件?

2 个答案:

答案 0 :(得分:0)

我猜你以前用homebrew安装了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文件。

答案 1 :(得分: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