MySQL gemをRubyでインストールする際のエラー「Failed to build gem native extension (can't find header files)」の解決方法
RubyでMySQL gemをインストールする際のエラー「Failed to build gem native extension (can't find header files)」の解決方法
gem install mysql2
を実行すると、以下のエラーが発生する。
Building native extensions. This could take a while...
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.
current directory: /Users/your_username/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/mysql2-0.6.1/ext/mysql2
/Users/your_username/.rbenv/versions/2.7.0/bin/ruby -r ./siteconf20230328-4832-19b182.rb extconf.rb
checking for mysql_query() in -lmysqlclient... no
checking for mysql_real_connect() in -lmysqlclient... no
...
*** extconf.rb failed ***
Could not find mysql.h while checking for mysql_query()
原因:
このエラーは、MySQLのヘッダーファイルが見つからないために発生します。
解決方法:
以下の手順で解決できます。
MySQLの開発パッケージをインストールする
- Macの場合:
brew install mysql-client
- CentOSの場合:
yum install mysql-devel
- Ubuntuの場合:
apt install libmysqlclient-dev
Rubyのバージョンを確認する
使用しているRubyのバージョンが古い場合、MySQLのヘッダーファイルとの互換性が無い可能性があります。
ruby -v
Rubyのバージョンが古い場合は、最新バージョンにアップデートすることをおすすめします。
gemを再インストールする
gem install mysql2
それでも解決しない場合
- 使用しているOS
- MySQLのバージョン
- 発生したエラーメッセージ全文
# MySQLへの接続
require 'mysql2'
# データベースへの接続
client = Mysql2::Client.new(
:host => 'localhost',
:username => 'root',
:password => 'password',
:database => 'database_name'
)
# クエリの実行
results = client.query("SELECT * FROM users")
# 結果の処理
results.each do |row|
puts row['name']
end
# データベースへの接続を閉じる
client.close
上記のコードはサンプルです。実際のコードは、環境に合わせて変更する必要があります。
他の方法
mysql2 gemのバージョンを指定する
gem install mysql2 -v '0.6.1'
上記のコマンドは、0.6.1
バージョンのmysql2
gemをインストールします。
--use-cpp オプションを使用する
gem install
コマンドに --use-cpp
オプションを指定すると、C++コンパイラを使用してgemをインストールできます。
gem install mysql2 --use-cpp
このオプションは、C++コンパイラがインストールされていない場合は使用できません。
ソースコードからインストールする
mysql2
gemは、ソースコードからインストールすることもできます。
git clone https://github.com/brianmarcel/mysql2.git
cd mysql2
gem build mysql2.gemspec
gem install mysql2.gem
この方法は、上級者向けです。
mysql ruby rubygems