Lチカ開発ブログ

https://l-chika.com/の開発ブログ

symbol not found in flat namespace '_mysql_affected_rows' が発生した時

前提

現象

bundle install は正常に実行できたが、./bin/rails s などのRailsコマンドを実行すると以下のようなエラーとなる。

※抜粋

$ ./bin/rails s
/Users/foo/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/bootsnap-1.11.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require': dlopen(/Users/foo/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/mysql2-0.5.4/lib/mysql2/mysql2.bundle, 0x0009): symbol not found in flat namespace '_mysql_affected_rows' - /Users/foo/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/mysql2-0.5.4/lib/mysql2/mysql2.bundle (LoadError)

おそらく、homebrewでinstallしたmysqlのパスがmysql2のデフォルトと異なるため?

解決方法

$ gem uninstall mysql2
$ gem install mysql2 --with-mysql-dir=/opt/homebrew/Cellar/mysql/8.0.29

これで解消した。