2011-08-07 30 views
9

我不太瞭解服務器維護,並試圖通過管理我自己的Mac進行學習。我正在運行一個帶有MySQL數據庫的本地Rails應用程序(5.5.9)。直到我試圖開始一個新的鐵軌項目,所有這些都長期以來一直很好。那時候,我運行了bundle install,它將我的MySQL gem從0.2.6更新到了0.3.6。從那時起,或者我與之相關聯(可能是我在那段時間還安裝了RVM),我無法啓動我的MySQL服務器。我收到以下錯誤:重複MySQL和雪豹的麻煩 - 無法鎖定./ibdata1,錯誤:35

Unable to lock ./ibdata1, error: 35 

重複。我試着固定:

mv ibdata1 ibdata1.bak 
cp -a ibdata1.bak ibdata1 

其中工程(參考:http://cglreport.zhenhua.info/2008/08/mysql-error-unable-to-lock-ibdata1.html)(我必須這樣做的幾個其他文件也是如此),但它僅適用於一段時間。當我重新啓動時,或者定期回來問題。這是怎麼回事 ?這對我來說似乎不是一個合理的解決方案。想法?謝謝!

+0

則誤差變爲:TCP/IP端口上綁定:使用已經3036個地址無法啓動服務器。奇怪 - 幫助!!!! – panzhuli

+0

運行「頂部」命令顯示沒有任何運行在3036 btw – panzhuli

+0

'top'不會告訴你有關端口號的任何信息。 – duskwuff

回答

13

這聽起來很有說服力,就像你已經有一個MySQL服務器正在運行的實例一樣,你試圖竊取它正在使用的數據文件。

+0

有沒有辦法向系統詢問端口3036上運行的是什麼?當從終端運行「頂部」時,我沒有看到任何東西。我認爲這是我在這方面的知識的限制... – panzhuli

+5

查找'ps ax | grep mysql'可能更容易。不過,對於後人,請嘗試'lsof -np | grep:mysql'。 ('lsof'將端口號轉換爲輸出中的服務名稱,因此您必須查找「:mysql」而不是「:3306」。) – duskwuff

+0

謝謝。服務器再次啓動。你爲什麼認爲這是反覆發生的?上述文件是否損壞? – panzhuli

0

這是什麼修復了我,看了四周,沒有任何幫助。

要修復此問題,請複製原始文件(ibdata1,ib_logfile0,ib_logfile1 ...)。

mv /var/lib/mysql/ibdata1 /var/lib/mysql/ibdata1.bak 

cp -a /var/lib/mysql/ibdata1.bak /var/lib/mysql/ibdata1 

現在啓動mysql服務。

/etc/init.d/mysql start 

對我來說,這是XAMPP文件,所以我做

sudo mv /Applications/XAMPP/xamppfiles/var/mysql/ibdata1 /Users/username/Documents/tmp/ibdata1.bak 
sudo cp -a /Users/username/Documents/tmp/ibdata1.bak /Applications/XAMPP/xamppfiles/var/mysql/ibdata1 

然後我注意到,MySQL是已經開始爲我。

基於該解決方案here