Mysql2 ::错误:无法通过socket' /tmp/mysql.sock'

时间:2016-12-17 15:45:55

标签: mysql ruby-on-rails macos

运行rake db:migrate时,出现此错误:

Mysql2::Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

我在这里看过其他人的问题,他们的解决方案都没有帮助我,例如:

解决方案一

mysql.server start

返回:

Starting MySQL

。错误!服务器退出而不更新PID文件(/usr/local/var/mysql/something.pid)。

解决方案二

mysqladmin variables | grep socket

返回:

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

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

进一步说明: 我尝试使用自制程序重新安装mysql,这是成功的,我仍然收到相同的错误:

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

3 个答案:

答案 0 :(得分:12)

我解决了!

首先,转到database.yml

host: localhost更改为host: 127.0.0.1

那就是它!

编辑这暂时有效,但是当我今天重新启动计算机时,它开始抛出相同的错误。修复是从网站上安装mysql,然后我的应用程序可以再次成功连接到mysql。

答案 1 :(得分:1)

环境:rails5 mysql5.7.32

作为补充,我也遇到了'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'的问题,但是错误的原因是socket文件引起的

数据库.yml

default: &default
  socket: /tmp/mysql.sock

登录mysql mysql -uroot -p 然后show variables like 'socket';

+---------------+-----------------------------+
| Variable_name | Value                       |
+---------------+-----------------------------+
| socket        | /var/run/mysqld/mysqld.sock |
+---------------+-----------------------------+

所以更改database.yml

default: &default
  socket: /var/run/mysqld/mysqld.sock # The line can also be deleted

答案 2 :(得分:-1)

另一个答案,在终端(zsh)中输入:

ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents

然后

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

应该没事。

相关问题