49

我正在尝试使用 Rails 3.2.3 安装 mysql2 gem,但它失败了:

★  bundle install
Fetching gem metadata from https://rubygems.org/.........
Using rake (0.9.2.2) 
Using i18n (0.6.0) 
Using multi_json (1.2.0) 
Using activesupport (3.2.3) 
Using builder (3.0.0) 
Using activemodel (3.2.3) 
Using erubis (2.7.0) 
Using journey (1.0.3) 
Using rack (1.4.1) 
Using rack-cache (1.2) 
Using rack-test (0.6.1) 
Using hike (1.2.1) 
Using tilt (1.3.3) 
Using sprockets (2.1.2) 
Using actionpack (3.2.3) 
Using mime-types (1.18) 
Using polyglot (0.3.3) 
Using treetop (1.4.10) 
Using mail (2.4.4) 
Using actionmailer (3.2.3) 
Using arel (3.0.2) 
Using tzinfo (0.3.32) 
Using activerecord (3.2.3) 
Using activeresource (3.2.3) 
Using bundler (1.1.3) 
Using coffee-script-source (1.2.0) 
Using execjs (1.3.0) 
Using coffee-script (2.2.0) 
Using rack-ssl (1.3.2) 
Using json (1.6.6) 
Using rdoc (3.12) 
Using thor (0.14.6) 
Using railties (3.2.3) 
Using coffee-rails (3.2.2) 
Using jquery-rails (2.0.2) 
Installing mysql2 (0.3.11) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/rarneson/.rvm/rubies/ruby-1.9.3-p125/bin/ruby extconf.rb 
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... no
*** 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
    --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/rarneson/.rvm/rubies/ruby-1.9.3-p125/bin/ruby
    --with-mysql-config
    --without-mysql-config
    --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-mysqlclientlib
    --without-mysqlclientlib
    --with-mlib
    --without-mlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-zlib
    --without-zlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-socketlib
    --without-socketlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-nsllib
    --without-nsllib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mygcclib
    --without-mygcclib
    --with-mysqlclientlib
    --without-mysqlclientlib


Gem files will remain installed in /Users/rarneson/.rvm/gems/ruby-1.9.3-p125/gems/mysql2-0.3.11 for inspection.
Results logged to /Users/rarneson/.rvm/gems/ruby-1.9.3-p125/gems/mysql2-0.3.11/ext/mysql2/gem_make.out
An error occured while installing mysql2 (0.3.11), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.11'` succeeds before bundling.

我正在运行捆绑安装,这在我的 Gemfile 中:

gem 'mysql2', '~> 0.3.11' 

我目前通过 MAMP 运行 MySQL。我不确定这是否是一个坏主意,我应该运行一个香草 MySQl,但似乎我目前的问题只是安装了 gem。我在 stackoverflow 上看到了很多这样的问题,但似乎都有点不同或有非常复杂的解决方案。有什么我想念的吗?简单的东西?有什么愚蠢的吗?如有必要,我可以从输出文件中提供其他信息。我读到有些人使用 SQLite 进行开发和测试,然后在产品中测试 MySQL,但这听起来是一个非常可怕的想法。

4

8 回答 8

129

来自https://github.com/brianmario/mysql2/issues/8

刚刚在控制台中复制了这个

sudo apt-get install mysql-client libmysqlclient-dev

并工作!

于 2012-07-24T00:00:00.970 回答
40

我使用Homebrew for Mac安装 mysql:

brew install mysql

然后我使用 gem 命令安装 mysql2 gem:

sudo gem install mysql2
于 2012-10-28T00:18:22.810 回答
17

这主要是由于缺少 mysql 头文件,尝试安装 mysql 开发人员(mysql-devel)包

通常,当缺少“libmysqlclient-dev”包时会出现此错误

于 2012-04-07T05:24:15.863 回答
2

我刚刚遇到了同样的问题,使用 OS X Sierra 和 MAMP 以及 Rails 5。我通过成功安装了 gem

gem install mysql2 -- --with-mysql-config=/Applications/MAMP/Library/bin/mysql_config

之后,捆绑安装工作得很好。

于 2017-05-08T12:03:16.773 回答
1

我最终只是安装了一个新的 MySQL 副本而不使用 MAMP,这就成功了。还必须确保安装 64 位版本,而不是 32 位。

于 2012-05-15T14:14:35.847 回答
0

您可以通过 Bundler关注此线程错误安装 mysql2 gem,它解释了 Centos 的解决方案,如果您在操作系统中调整命令并且您可以成功安装 mysql2 gem,则此问题将得到解决。

于 2012-08-22T06:19:13.893 回答
0

只需将 MAMP mysql 添加到 PATH,然后您就可以正常运行 bundle install 了。

$ /Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot

来源:http ://blog-en.mamp.info/2009/08/using-mysql-command-line-with-mamp.html

于 2013-10-29T13:03:41.330 回答
0

当我收到这个错误时,我可以通过运行来解决这个问题:

gem install devtools
于 2018-02-04T03:21:22.807 回答