Ruby 2.3を使用しています。gemfileにはmysql2 gemがリストされていますが、rake db:migrate
を実行しようとすると、次のようになります。
/Users/me/.gem/Ruby/2.3.0/gems/mysql2-0.4.2/lib/mysql2.rb:31:in `require': incompatible library version - /Users/me/.gem/Ruby/2.3.0/gems/mysql2-0.4.2/lib/mysql2/mysql2.bundle (fatal)
これを回避できないようです。 Homebrewを使用してMysql 5.7をインストールし、バンドルの更新、mysql2 gemのアンインストールおよび再インストールを試みましたが、まったく役に立ちませんでした。
これを解決するにはどうすればよいですか?
私はgem pristine --all
でこれを解決することになりました
gem pristine mysql2
に続いてspring stop
でこれを解決しました。
同じ問題が発生しました。 Ruby 2.3.4をインストールし、Rails 4.6.2。
2つの問題の原因があり、使用しているホスティング会社のサポートチームが問題の解決を助けてくれました。
最初は、インストールされたmysql2 libがデフォルトでRuby 2の代わりにRuby 1.8にリンクされていた
# lld ../2.2.0/mysql2-0.4.4/mysql2/mysql2.so
...
...
libruby.so.1.8 => /usr/lib64/libruby.so.1.8 (0x00007f2af1f8a000)
...
2番目の問題は、インストールされたmysqlサーバー設定でlibをコンパイルすることでした
そのため、mysql2 gemをアンインストールして、正しいRuby libで再インストールし、正しいmysql構成でコンパイルする必要がありました。
以下はコマンドです。
gem uninstall mysql2
gem install mysql2 -- --with-mysql-config=/usr/bin/mysql_config --with-opt-lib=/where/my/Ruby22/lib_was_located/
sudo gem pristine mysql2を実行してもうまくいきませんでした。
Mysql2 gemをアンインストールして再インストールする必要がありました。
私のために働いた唯一のものは
gem install nokogiri -v 1.10.2
その後、それは大丈夫だった。
Ubuntu 16.04に移行すると、この問題が発生しました
次はトリックをしました
Sudo apt-get install g++
Sudo apt-get install build-essential