2011-09-05 178 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(從官方網站)解決了這一問題。

相關問題