2011-09-05 86 views
2

我是全新的Web开发和RoR - 超级好评! - 我正在通过lynda.com参加在线RoR课程。兴奋加入StackOverflow社区,并会真正感谢一些障碍的帮助。无法通过套接字'/tmp/mysql.sock'连接到本地MySQL服务器

MySQL和本地主机都工作正常了好几个星期,我建立了我的基本的应用程序,并成功地进行了一些迁移,但今天我得到这个MySQL的错误,当我启动我的Rails服务器和视图上http://localhost:3000/在我的浏览器:

Mysql2 ::错误(无法通过套接字“/tmp/mysql.sock”连接到本地MySQL服务器(2)):

我不认为我已经改变了任何有关在我的环境,所以我想知道是否需要更新宝石或类似的东西?

我已经在Google和StackOverflow上搜寻了几个小时了,但仍然无法弄清楚这里出了什么问题,以及如何解决它。其他解决方案似乎与新设置有关,而不是难以解决的工作设置。

这里的一些背景:


从我的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 

etc ... (从这里工作得很好)


但后来我今天尝试了相同的命令,并收到错误消息:

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$ 

One StackOverflow thread给了我这个线索,但它似乎只是强化了我的设置是正确的。

sdemessieres$ mysql_config |grep -- --socket 
     --socket   [/tmp/mysql.sock] 

正如我所说的,我是一个总的初学者所以任何帮助,将不胜感激,谢谢!

回答

1

更新:我今天再次尝试没有改变任何东西,它运作良好。去搞清楚。不过,希望我知道发生了什么事。

+2

请编辑您自己的问题。不要回答你的自我作为编辑! – 2011-09-30 14:08:02

+1

@ Mr.DD虽然我同意这个原则,但这也是这个问题的自我回答,我认为这个问题是“有效”的。但是,在这种情况下,我只是简单地删除问题。 – Romain

+1

我不会删除这个问题。对于其他可能意识到如果他们等待一会再运行命令的人来说,这个答案可能会有帮助。 – Aspen

6

这个问题有些过时,但我在研究类似问题时遇到了这个问题。使用mysql_config命令确认套接字位置和名称有助于解决我的问题。

我得到了同样的错误,并调整了config/database.yml中的套接字入口路径,以匹配我在其中找到.sock文件的位置。

但是,除了路径更改之外,我的database.yml文件中的套接字条目与"mysql.sock"相关,在我的搜索期间,与大多数有关此问题的讨论一样。

mysql_config的输出略有不同。它显示文件名是"mysqld.sock" ...注意到'd',而不是mysql.sock。我错过了,因为我专注于这条道路。

安装在mysql服务器上只有VPS,没有客户端,这可能会解释套接字文件名的区别。

+0

这很有帮助。这感觉像是一个新手的错误,但是,是的,你可能很容易错过检查'mysqld.sock'文件路径中的* d * ...... – rchampourlier

0

我对相同的错误运行,对于我来说,两个套接字信息都显示为mysqld。 我有两个会话在mysql客户端中定义。我通过删除一个会话定义解决了我的问题,只留下了localhost。在删除并重新运行应用程序后,连接工作。

我不知道它是如何连接到另一个,但它的工作原理,所以它可能也适用于其他人。

0

命名CLEARDB_DATABASE_URL到DATABASE_URL在Heroku的CONFIGS

0

我又有了同样的错误,并安装MySQL(从官方网站)解决了这一问题。

相关问题