错误:无法构建gem原生扩展(rails 3.2.3上的mysql2)

时间:2012-04-07 03:19:11

标签: mysql ruby-on-rails mysql2

我正在尝试使用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.

我正在运行bundle install,这是在我的Gemfile中:

gem 'mysql2', '~> 0.3.11' 

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

7 个答案:

答案 0 :(得分:127)

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

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

sudo apt-get install mysql-client libmysqlclient-dev

并且工作!!

答案 1 :(得分:40)

我使用Homebrew for Mac来安装mysql:

brew install mysql

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

sudo gem install mysql2

答案 2 :(得分:17)

这主要是由于缺少mysql头,试着安装mysql开发者(mysql-devel)包

通常,当&libffysqlclient-dev' libmysqlclient-dev'包丢失

答案 3 :(得分:1)

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

答案 4 :(得分:0)

您可以按照此线程Errors Installing mysql2 gem via the Bundler解释Centos的解决方案,如果您调整操作系统的命令并且能够成功安装mysql2 gem,这个问题将得到修复。

答案 5 :(得分: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

答案 6 :(得分:0)

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

gem install devtools