0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.23.dylib (LoadError) を解決

Posted at

railsクレデンシャルの修正を行おうと下記コマンドを実行したところ、エラーが表示されました。

$ EDITOR="vim" bundle exec bin/rails credentials:edit
<internal:/Users/aisplay/.rbenv/versions/3.2.3/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:37:in `require':
dlopen(/Users/aisplay/project/EXMAPLE-REPOSITORY/vendor/bundle/ruby/3.2.0/gems/mysql2-0.5.6/lib/mysql2/mysql2.bundle, 0x0009):
Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.23.dylib (LoadError)
Referenced from: <XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX> /Users/aisplay/project/EXMAPLE-REPOSITORY/vendor/bundle/ruby/3.2.0/gems/mysql2-0.5.6/lib/mysql2/mysql2.bundle
Reason: tried: '/usr/local/opt/mysql/lib/libmysqlclient.23.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/opt/mysql/lib/libmysqlclient.23.dylib' (no such file), '/usr/local/opt/mysql/lib/libmysqlclient.23.dylib' (no such file), '/usr/local/lib/libmysqlclient.23.dylib' (no such file), '/usr/lib/libmysqlclient.23.dylib' (no such file, not in dyld cache) - /Users/aisplay/project/EXMAPLE-REPOSITORY/vendor/bundle/ruby/3.2.0/gems/mysql2-0.5.6/lib/mysql2/mysql2.bundle

エラーメッセージを見ている感じだと、Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.23.dylib (LoadError)とあるので、mysqlのlibでlibmysqlclient.23.dylibの読み込みに失敗しているよう。

試しに確認。

$ cd /usr/local/opt/mysql/lib/
$ ls -a

見た感じlibmysqlclient.23.dylibはなくて、libmysqlclient.24.dylibがある。

どうやらlibmysqlclient.23.dylibが提供されているのはmysql@8.3で、
libmysqlclient.24.dylibはmysql@9.0だった。

mysqlのバージョンを確認してみる

$ mysql --version

やはり9.0が使われている!
最近PCを新しくしてbrew install mysqlを行ったのですが、最近 安定版が9.0になったようで、その時にうっかりmysql9をインストールしてしまったようです。

そして使用しているgem mysql2の最新版が0.5.6(更新時点)で、
libmysqlclient 8.3までしかサポートしていないと書いてある。。
https://github.com/brianmario/mysql2/releases/tag/0.5.6

mysqlをダウングレードする

そもそも今のプロジェクトではmysqlのバージョンは8なので、インストールしました。

$ brew install mysql@8.0

brewで提供されている8系は8.4もありましたが、8.4では9.0と同じくlibmysqlclient.24.dylibが使われていたので、8.0をインストール。
ちなみにbrew search mysqlしてインストールできるバージョンを確認してみましたが、8.3がなかったので8.0をインストールしました。

一緒にmysql-client@8.0もインストール。

brew install mysql-client@8.0

開発ディレクトリ内で、参考Issue(後述)通りにコマンドを実施。

$ bundle config --local build.mysql2 -- --with-mysql-dir=$(brew --prefix mysql-client@8.0)

上記設定が反映されたかを確認
$ bundle config

$ bundle install

これでもエラーが解消されなかったので、
一旦vendor配下のbundleディレクトリを削除してから再度bundle install実行したら、エラーが解消されました!

参考

このIssueの回答がめちゃめちゃ参考になりました🥲🥲

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?