我使用两台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文件?
答案 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