运行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)
答案 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
应该没事。