我是网络开发和 RoR 的新手 - super 菜鸟! - 我正在通过 lynda.com 参加在线 RoR 类(class)。很高兴加入 StackOverflow 社区,非常感谢您在障碍方面的帮助。
在我设置我的基本应用程序并成功运行一些迁移时,MySQL 和 localhost 工作了几个星期,但今天我在启动我的 Rails 服务器并在 http://localhost:3000/ 上查看时遇到了这个 MySQL 错误。在我的浏览器中:
Mysql2::错误(无法通过套接字 '/tmp/mysql.sock' (2) 连接到本地 MySQL 服务器):
我认为我没有更改任何与我的环境相关的内容,所以我想知道我是否需要更新 gems 或类似的简单内容?
我已经在 Google 和 StackOverflow 上搜索了几个小时,但仍然无法弄清楚这里出了什么问题以及如何解决它。其他解决方案似乎与新设置有关,而不是与莫名其妙中断的工作设置有关。
这里是一些上下文:
来 self 的 config/database.yml:
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: simple_cms_development
pool: 5
username: simple_cms
password: XXXXXXXXX
socket: /tmp/mysql.sock
我在几周前保存了一个命令行,当时 MySQL 和本地主机工作正常:
Last login: Mon Aug 15 21:34:23 on ttys000
sdemessieres$ cd sites/simple_cms
sdemessieres$ pwd
/Users/sdemessieres/sites/simple_cms
sdemessieres$ rails server
=> Booting WEBrick
=> Rails 3.0.7 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2011-08-22 22:28:01] INFO WEBrick 1.3.1
[2011-08-22 22:28:01] INFO ruby 1.8.7 (2009-06-12) [universal-darwin10.0]
[2011-08-22 22:28:01] INFO WEBrick::HTTPServer#start: pid=66952 port=3000
Started GET "/" for 127.0.0.1 at Mon Aug 22 22:28:20 -0400 2011
Processing by DemoController#index as HTML
等...(从这里开始工作正常)
但是今天我尝试了相同的命令并收到错误:
Last login: Mon Sep 5 12:13:22 on ttys000
sdemessieres$ cd sites/simple_cms
sdemessieres$ pwd
/Users/sdemessieres/sites/simple_cms
sdemessieres$ rails server
=> Booting WEBrick
=> Rails 3.0.7 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2011-09-05 12:33:09] INFO WEBrick 1.3.1
[2011-09-05 12:33:09] INFO ruby 1.8.7 (2009-06-12) [universal-darwin10.0]
[2011-09-05 12:33:09] INFO WEBrick::HTTPServer#start: pid=11027 port=3000
Started GET "/" for 127.0.0.1 at Mon Sep 05 12:33:41 -0400 2011
Mysql2::Error (Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)):
Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.7/lib/action_dispatch/middleware/templates/rescues/_trace.erb (0.8ms)
Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.7/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.7ms)
Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.7/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (6.3ms)
所以我回到训练中的数据库笔记,并尝试从我的命令行连接到 MySQL,它以前可以工作但现在不再工作了:
sdemessieres$ pwd
/Users/sdemessieres/sites/simple_cms
sdemessieres$ which mysql
/usr/local/mysql/bin/mysql
sdemessieres$ mysql --version
mysql Ver 14.14 Distrib 5.5.13, for osx10.6 (i386) using readline 5.1
sdemessieres$ mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
sdemessieres$
一个 StackOverflow thread给了我这个线索,但它似乎只是强化了我的设置是正确的。
sdemessieres$ mysql_config |grep -- --socket
--socket [/tmp/mysql.sock]
正如我所说,我是一个完全的初学者,所以非常感谢任何帮助,谢谢!
最佳答案
这个问题有点过时了,但我在研究类似问题时遇到了它。使用 mysql_config
命令确认套接字位置和名称有助于解决我的问题。
我遇到了同样的错误,并调整了 config/database.yml
中的套接字入口路径以匹配我找到 .sock
文件的位置。
但是除了路径更改之外,我的 database.yml
文件中的套接字条目引用了 “mysql.sock”
,与此问题相关的大多数讨论也是如此在我的搜索过程中。
mysql_config
的输出略有不同。它显示文件名为 “mysqld.sock”
...注意 'd',而不是 mysql.sock
。我错过了它,因为我专注于道路。
mysql
安装在只有 VPS 的服务器上,没有客户端,这可以解释套接字文件名的差异。
关于mysql - 无法通过套接字 '/tmp/mysql.sock' 连接到本地 MySQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310967/