質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

1018閲覧

sqlite3からmysqlに切り替える際に生じた mysql2のインストールエラーを解決したい

taddy_korokoro

総合スコア1

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/09/22 01:43

前提

ポートフォリオ作成のため、現在自作アプリを実装しております。
現在、本番環境での自動デプロイを実装するため、参考記事を確認していた所、DB環境がMySQLに設定されていることが前提の記事が多いと感じました。
そのため、以前はローカルでsqlite使用、本番でmysql使用と分けていたものを全ての環境でmysqlを使えるように設定したく実装を進めています。

環境

ruby 2.7.2
rails 6.1
macOS

エラー内容

色んなことを試したため、かなり長くなっておりますがお力いただければ幸いです。

hana_nav_app+[master] % bundle Fetching gem metadata from https://rubygems.org/............ ・ ・ Fetching mysql2 0.5.3 ・ ・ Using sass-rails 6.0.0 Installing mysql2 0.5.3 with native extensions Using devise-i18n 1.10.0 Using rails 6.1.4.1 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3/ext/mysql2 /Users/taddy/.rbenv/versions/2.7.2/bin/ruby -I /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/2.7.0 -r ./siteconf20210921-50046-8t4gxa.rb extconf.rb --with-cppflags\=-I/usr/local/opt/openssl@1.1/include checking for rb_absint_size()... yes checking for rb_absint_singlebit_p()... yes checking for rb_wait_for_single_fd()... yes *** 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/taddy/.rbenv/versions/2.7.2/bin/$(RUBY_BASE_NAME) --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-mysqlclient-dir --without-mysqlclient-dir --with-mysqlclient-include --without-mysqlclient-include=${mysqlclient-dir}/include --with-mysqlclient-lib --without-mysqlclient-lib=${mysqlclient-dir}/lib --with-mysqlclientlib --without-mysqlclientlib /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/2.7.0/mkmf.rb:1050:in `block in find_library': undefined method `split' for nil:NilClass (NoMethodError) from /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/2.7.0/mkmf.rb:1050:in `collect' from /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/2.7.0/mkmf.rb:1050:in `find_library' from extconf.rb:87:in `<main>' To see why this extension failed to compile, please check the mkmf.log which can be found here: /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/extensions/x86_64-darwin-20/2.7.0/mysql2-0.5.3/mkmf.log extconf failed, exit code 1 Gem files will remain installed in /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3 for inspection. Results logged to /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/extensions/x86_64-darwin-20/2.7.0/mysql2-0.5.3/gem_make.out An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue. Make sure that `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'` succeeds before bundling. In Gemfile: mysql2

解決したいこと

mysql2をインストールさせたいです。

試したこと

mysql@5.7を使用したいため、以前入れていたデータを全て削除しました。

brew remove mysql brew cleanup sudo rm -rf /usr/local/Cellar/mysql* sudo rm -rf /usr/local/bin/mysql* sudo rm -rf /usr/local/var/mysql* sudo rm -rf /usr/local/etc/my.cnf sudo rm -rf /usr/local/share/mysql* sudo rm -rf /usr/local/opt/mysql* sudo rm -rf /etc/my.cnf

次にbrew install mysql@5.7でインストールを行い、mysqlのパスを通しました。
下記コードが現在の状況です。

export PATH="~/.rbenv/shims:/usr/local/bin:$PATH" eval "$(rbenv init -)" export PATH="/usr/local/opt/openssl@1.1/bin:$PATH" export PATH="$HOME/.rbenv/bin:$PATH" export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"

バージョンを確認、mysqlコマンドを使用できることを確認

~ % mysql --version mysql Ver 14.14 Distrib 5.7.35, for osx10.16 (x86_64) using EditLine wrapper

gemを変更後、bundleインストール実行し、このときはエラーなく成功。mysqlサーバも起動しました。

Gemfile # gem 'sqlite3', '~> 1.4' gem 'mysql2', '~> 0.5.3' ~ % mysql.server start Starting MySQL SUCCESS! ~ % 2021-09-20T11:43:31.6NZ mysqld_safe A mysqld process already exists

DBの定義ファイルを変更

default: &default adapter: mysql2 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root timeout: 5000 development: <<: *default database: hana_nav_app_development test: <<: *default database: hana_nav_app_test production: <<: *default database: hana_nav_app_production

DB作成時でエラーが発生しました。

hana_nav_app+[master] % bundle exec rails db:create rails aborted! LoadError: dlopen(/Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle, 9): Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib Referenced from: /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle Reason: image not found - /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle /Users/taddy/rails_projects/hana_nav_app/config/application.rb:7:in `<main>' /Users/taddy/rails_projects/hana_nav_app/Rakefile:4:in `<main>' bin/rails:5:in `<main>' (See full trace by running task with --trace)

ググるとシンボリックリンクの問題とのことでした。

% bundle doctor 実行結果 Files exist in the Bundler home that are not readable/writable by the current user. These ・ 文字数制限のため、省略 ・ * mysql2: /usr/lib/libSystem.B.dylib * mysql2: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib

The following gems are missing OS dependencies:以下に記述のあるgemをアンインストールしろとのことなので、まず最初にmysql2を削除しました。

hana_nav_app+[master] % bundle exec gem uninstall mysql2 Successfully uninstalled mysql2-0.5.3

無事アンインストールできたので再度確認した所、bundleインストールしてとのことなので実行。

hana_nav_app+[master] % bundle doctor The following gems are missing * mysql2 (0.5.3) Install missing gems with `bundle install`

実行後のエラー文が「エラー内容」になります。
この後、gem install mysql2 -v '0.5.3'も試したのですが駄目でした。

詳しい方がいましたらアドバイスいただけると幸いです。
何卒よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

mysql2をcompileするために必要なものが無いのだとおもいます。多分mysqlの開発環境。
To see why this extension failed to compile, please check the mkmf.log which can be found here: /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/extensions/x86_64-darwin-20/2.7.0/mysql2-0.5.3/mkmf.log
とあります。このfileに
何が原因か、どうすればよいのか
が記述されていることが普通なので、まずそこを見てください。最後です。

投稿2021/09/22 09:45

winterboum

総合スコア23347

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問