Brew 升級MongoDB無法連線資料庫
上週末終於下定決心把家裡的一臺2012年的Mac Mini(買來後就加裝了SSD並升級了記憶體)從10.11 升級到10.14。升級完了覺得比原來有點慢,尤其是啟動的時候,但想想機器裡裝了那麼多東西,又不是全新安裝,再加上它也不是我的主力開發機器,也就忍了。
除了有些app需要升級以外,其他基本上正常。花時間較多的就是我用的一個鍵盤快捷鍵軟體karabiner
,改動比較大,原來的配置都沒法用了。又得重新找配置,找到了還要改成自己的習慣,找不到合適的就得自己寫,尤其是我這臺Mac Mini配的蘋果藍芽鍵盤有些鍵壞了(1-9,F1-F9打不出來),就得重寫配置,如按right_ctrl + a-l
來輸出數字1-9
。
MongoDB 升級到了4.x,出錯了!
我的MongoDB是用homebrew
安裝的,當時安裝的版本是3.4。由於開發上的需要,我一直使用brew pin mongodb
把版本固定在3.4。後來雖然換了機器,我也忘了unpin
,就一直固定在那個版本。
這次升級macOS 10.14後,用brew
升級安裝的軟體包的時候就順手把原來所有pin
的都unpin
了,mongoDB
也升級到了4.0.3。昨天有個朋友需要配置一下Mac下的開發環境,在給他講的時候順手啟動了一下MongoDB,竟然無法啟動,給了這麼一串資訊:
[main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
什麼情況?朋友新裝的可以順利啟動,我的竟然不可以?
MongoDB啟動使用brew的預設配置
順便說一下,我在開發機器上一般是用brew services start mongodb
將mongod
設定為開機自啟動的,會呼叫brew的一個預設配置檔案,這樣省得自己再去設定資料儲存路徑等。在非主力機上我一般用手動啟動,也是使用brew的預設配置檔案mongod --config /usr/local/etc/mongod.conf
,我在.zshrc
裡配置了一個名為mongobrew
的alias,每次敲mongobrew
就行了,省得敲那麼多鍵。
不過太多alias了也是個麻煩,記不住啊!我大概有差不多3年沒有新增新的alias了。自從我發現了FZF 以後,只要按一個快捷鍵然後用模糊搜尋我原來敲過的命令就行了,高大上了很多。
扯遠了,不過FZF 確實值得推薦!
解決方法
搜尋了一下,發現了簡書上這篇和這篇文章都提到了這個問題,雖然給出瞭解決方法,如另外建立資料庫儲存路徑/data/db
- MongoDB預設的,但沒有說明為什麼會出現這個問題。
查看了一下log,發現有這麼一個警告:
** IMPORTANT: UPGRADE PROBLEM: The data files need to be fully upgraded to version 3.6 before attempting an upgrade to 4.0; see http://dochub.mongodb.org/core/4.0-upgrade-fcv
意思是資料檔案在升級到4.0以前,首先要升級到與3.6相容,然後給出了一個文件連結。
於是
brew install [email protected]
重新安裝了MongoDB 3.4。
然後就可以重新連線資料庫了。
需要注意的是如果你要在命令列下執行如mongod
或mongo
的話,你需要按照下面MongoDB Formula
的建議配置你的PATH
:
[email protected] is keg-only, which means it was not symlinked into /usr/local, because this is an alternate version of another formula. If you need to have [email protected] first in your PATH run: echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.zshrc To have launchd start [email protected] now and restart at login: brew services start [email protected] Or, if you don't want/need a background service you can just run: /usr/local/opt/[email protected]/bin/mongod --config /usr/local/etc/mongod.conf
問題暫時解決了。待我升級了資料庫檔案支援4.0以後,再在這裡更新。