重裝MySQL 和 gem mysql2 指定版本的爬坑經(jīng)歷

MySQL的安裝

我因為新的項目用的 gem 'mysql2', '0.4.5'先馆,與我的 MySQL 5.7 不兼容奕枝,就重裝了MySQL。

但執(zhí)行 mysql -uroot快鱼,報錯 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

執(zhí)行 ln -s /usr/local/var/mysql/mysql.sock /tmp/mysql.sock后读第,
再執(zhí)行 mysql -uroot曙博,報錯ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/usr/local/var/mysql/mysql.sock' (2)
/usr/local/var/mysql 目錄查看,發(fā)現(xiàn)根本沒有 mysql.sock 文件怜瞒。所以父泳,不只是沒有軟鏈接的問題。

又Google到了各種答案盼砍,各種嘗試后都還是不行尘吗。

最終搜到了以下答案,直接徹底刪除之前的MySQL浇坐,然后重裝:brew install mysql on mac os

brew remove mysql

brew cleanup

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

sudo rm -rf /usr/local/var/mysql
brew install mysql         #安裝最新版本
brew install mysql@5.7     #安裝指定版本


unset TMPDIR

mysql.server start

mysql -uroot

我自己一開始的重裝出錯的原因睬捶,應(yīng)該就是沒有徹底刪除之前的MySQL。

執(zhí)行 rails console時近刘,若報錯: Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.20.dylib (LoadError)擒贸, 說明是重裝了MySQL臀晃,rails 找不到 mysql的相關(guān)文件了。這時需要依次執(zhí)行:

gem uninstall mysql2
gem install mysql

安裝 gem mysql2 的指定版本

比如Rails項目的Gemfile中使用的是 gem mysql2 0.3.18 版本介劫,執(zhí)行 gem install mysql2 -v '0.3.18',報錯:

Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

    /Users/huazai/.rvm/rubies/ruby-2.1.1/bin/ruby extconf.rb
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/local/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Setting rpath to /usr/local/Cellar/mysql/8.0.15/lib
-----
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling client.c
client.c:431:3: error: use of undeclared identifier 'my_bool'
  my_bool res = mysql_read_query_result(client);
  ^
client.c:433:19: error: use of undeclared identifier 'res'
  return (void *)(res == 0 ? Qtrue : Qfalse);
                  ^
client.c:762:3: error: use of undeclared identifier 'my_bool'
  my_bool boolval;
  ^
client.c:793:7: error: use of undeclared identifier 'boolval'
      boolval = (value == Qfalse ? 0 : 1);
      ^
client.c:794:17: error: use of undeclared identifier 'boolval'
      retval = &boolval;
                ^
client.c:797:10: error: use of undeclared identifier 'MYSQL_SECURE_AUTH'; did you mean 'MYSQL_DEFAULT_AUTH'?
    case MYSQL_SECURE_AUTH:
         ^~~~~~~~~~~~~~~~~
         MYSQL_DEFAULT_AUTH
/usr/local/Cellar/mysql/8.0.15/include/mysql/mysql.h:188:3: note: 'MYSQL_DEFAULT_AUTH' declared here
  MYSQL_DEFAULT_AUTH,
  ^
client.c:798:7: error: use of undeclared identifier 'boolval'
      boolval = (value == Qfalse ? 0 : 1);
      ^
client.c:799:17: error: use of undeclared identifier 'boolval'
      retval = &boolval;
                ^
client.c:830:38: error: use of undeclared identifier 'boolval'
        wrapper->reconnect_enabled = boolval;
                                     ^
client.c:1196:38: error: use of undeclared identifier 'MYSQL_SECURE_AUTH'; did you mean 'MYSQL_DEFAULT_AUTH'?
  return _mysql_client_options(self, MYSQL_SECURE_AUTH, value);
                                     ^~~~~~~~~~~~~~~~~
                                     MYSQL_DEFAULT_AUTH
/usr/local/Cellar/mysql/8.0.15/include/mysql/mysql.h:188:3: note: 'MYSQL_DEFAULT_AUTH' declared here
  MYSQL_DEFAULT_AUTH,
  ^
10 errors generated.
make: *** [client.o] Error 1

make failed, exit code 2

是因為 和 mysql 的高版本不兼容徽惋。需要卸載 MySQL重裝兼容的版本,比如 MySQL 5.7版座韵。

但安裝5.7版后再執(zhí)行 gem install mysql2 -v '0.3.18' --source 'https://gems.ruby-china.com/ 又報錯:

Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

    /Users/huazai/.rvm/rubies/ruby-2.1.1/bin/ruby extconf.rb
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/huazai/.rvm/rubies/ruby-2.1.1/bin/ruby
    --with-mysql-dir
    --without-mysql-dir
    --with-mysql-include
    --without-mysql-include=${mysql-dir}/include
    --with-mysql-lib
    --without-mysql-lib=${mysql-dir}/lib
    --with-mysql-config
    --without-mysql-config
    --with-mysql-dir
    --without-mysql-dir
    --with-mysql-include
    --without-mysql-include=${mysql-dir}/include
    --with-mysql-lib
    --without-mysql-lib=${mysql-dir}/lib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mlib
    --without-mlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-zlib
    --without-zlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-socketlib
    --without-socketlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-nsllib
    --without-nsllib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mygcclib
    --without-mygcclib
    --with-mysqlclientlib
    --without-mysqlclientlib

extconf failed, exit code 1

也搜到了各種方法险绘,都沒解決問題∮辏可能是我重裝之前刪掉了一些不該刪除的文件宦棺。不知道以后還會不會帶來災難,哈哈哈哈哈哈哈哈哈哈哈
我是最后通過執(zhí)行gem install mysql2 -v '0.3.18' --source 'https://gems.ruby-china.com/' -- --with-mysql-config=/usr/local/Cellar/mysql@5.7/5.7.25/bin/mysql_config 才安裝成功了黔帕。

執(zhí)行 rails console時代咸,若報錯:Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) (Mysql2::Error)衩侥,執(zhí)行ln -s /usr/local/var/mysql/mysql.sock /tmp/mysql.sock 柳琢,如果報錯 ln: /tmp/mysql.sock: File exists ,可先將文件/tmp/mysql.sock刪除壮虫,再執(zhí)行 ln -s /usr/local/var/mysql/mysql.sock /tmp/mysql.sock

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奋岁,一起剝皮案震驚了整個濱河市思瘟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闻伶,老刑警劉巖潮太,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異虾攻,居然都是意外死亡,警方通過查閱死者的電腦和手機更鲁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門霎箍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人澡为,你說我怎么就攤上這事漂坏。” “怎么了媒至?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵顶别,是天一觀的道長。 經(jīng)常有香客問我拒啰,道長驯绎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任谋旦,我火速辦了婚禮剩失,結(jié)果婚禮上屈尼,老公的妹妹穿的比我還像新娘。我一直安慰自己拴孤,他們只是感情好脾歧,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著演熟,像睡著了一般鞭执。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上芒粹,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天兄纺,我揣著相機與錄音,去河邊找鬼是辕。 笑死囤热,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的获三。 我是一名探鬼主播旁蔼,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疙教!你這毒婦竟也來了棺聊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤贞谓,失蹤者是張志新(化名)和其女友劉穎限佩,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體裸弦,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡祟同,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了理疙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晕城。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖窖贤,靈堂內(nèi)的尸體忽然破棺而出砖顷,到底是詐尸還是另有隱情,我是刑警寧澤赃梧,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布滤蝠,位于F島的核電站,受9級特大地震影響授嘀,放射性物質(zhì)發(fā)生泄漏物咳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一蹄皱、第九天 我趴在偏房一處隱蔽的房頂上張望所森。 院中可真熱鬧囱持,春花似錦、人聲如沸焕济。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晴弃。三九已至掩幢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間上鞠,已是汗流浹背际邻。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芍阎,地道東北人世曾。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像谴咸,于是被迫代替她去往敵國和親轮听。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容