2012-07-04 46 views
0

我使用兩臺OS X機器來開發我的Ruby on Rails應用程序。我的臺式機工作正常,我的筆記本電腦是工作的罰款,直到前幾天,當我在本地服務器對頁面加載運行此錯誤:在OS X Lion上丟失RoR應用程序的mysql.sock

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

我得到同樣的錯誤,當我嘗試從終端的MySQL 。

我查了一些其他的線程,但沒有自己的解決方案,幫助過我的問題:

Ruby on Rails 3 Can't connect to local MySQL server through socket '/tmp/mysql.sock' on OSX

Can't connect to local MySQL server through socket

最後一個環節的傢伙似乎和我一樣是具有完全相同的問題,但該頁面上的答案沒有幫助我,因爲我無法運行MySQL。我一直在網上看到了這個問題,人們固定的,因爲他們的.sock文件是錯誤的位置,所以我跑了

$ ln -s /var/lib/mysql/mysql.sock /tmp 

嘗試創建一個別名,但它看起來像的mysql.sock不會在任一位置存在。當我試圖運行:

$ mysqladmin variables | grep socket 

我得到這個錯誤:

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

最後,我打開隱藏文件,去四處尋找我的電腦,而找不到的mysql.sock文件或MySQL上述任何目錄中的文件夾。再一次,MySQL WAS在一週前在這臺計算機上工作正常,現在因爲某種原因莫名其妙地停止了工作。

如何爲這臺計算機恢復或重新創建我的.sock文件?

+0

你有沒有試過運行mysqld? – coderek

+0

是的,這裏的輸出:https://gist.github.com/3068400 – cranderveldt

+0

你可以發佈'ps aux | grep mysql'和'哪個mysql'在這裏?它可能是你在不同的地方運行2個MySQL服務器。 – coderek

回答

0

我猜你已經安裝了使用自制軟件的mysql。請注意,你有你的mysqld已經在

/usr/local/Cellar/mysql/5.5.24/bin/mysqld 

跑不過你當前mysql命令鏈接

/usr/local/bin/mysql 

相反,它應該是

/usr/local/Cellar/mysql/5.5.24/bin/mysql 

您可以嘗試添加別名到您的.bashrc指向正確的命令。

在新窗口中運行mysql之前,請嘗試終止所有其他mysqld_safe進程。它應該現在讀取正確的mysql sock文件。

+0

聽起來很棒,我運行什麼命令來實現這個目標?對不起,我是一個MySQL新手。 – cranderveldt

+0

在最後一行打開'〜/ .bashrc'添加別名mysql =「/ usr/local/Cellar/mysql/5.5.24/bin/mysql」。並打開新的終端來運行'mysql' – coderek

+0

奇怪我根本沒有'〜/ .bashrc'。我有'〜/ .bash_history'和'〜/ .bash_profile'爲什麼我沒有這個文件,或者爲什麼它不在我的主目錄中? – cranderveldt

0

原因可能是Gemfile中指定的套接字路徑可能是錯誤的。

首先,找到你的套接字文件:

mysqladmin variables | grep socket 

對於我來說,這給:

| socket /var/run/mysqld/mysqld.sock 

然後,這條線/var/run/mysqld/mysqld.sock插座字段添加到您的config/database.yml的。見以下實施例

實施例:socket: /var/run/mysqld/mysqld.sock

發展模式

development: 
    adapter: mysql2 
    host: localhost 
    username: root 
    password: xxxx 
    database: xxxx 
    socket: /var/run/mysqld/mysqld.sock # this line 

生產模式

production: 
    adapter: mysql2 
    host: localhost 
    username: root 
    password: xxxx 
    database: xxxx 
    socket: /var/run/mysqld/mysqld.sock # this line 

測試模式

test: 
    adapter: mysql2 
    host: localhost 
    username: root 
    password: xxxx 
    database: xxxx 
    socket: /var/run/mysqld/mysqld.sock # this line