MySQL 错误:无法构建 gem 本机扩展(rails 3.2.3 上的 mysql2)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10051448/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
ERROR: Failed to build gem native extension (mysql2 on rails 3.2.3)
提问by Ryan Arneson
I'm trying to install the mysql2 gem with Rails 3.2.3 and it's failing:
我正在尝试使用 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.
I'm running bundle install and this is in my Gemfile:
我正在运行 bundle install ,这是在我的 Gemfile 中:
gem 'mysql2', '~> 0.3.11'
I've currently got MySQL running through MAMP. I'm not sure if this is a bad idea and I should run a vanilla MySQl but it seems my current problem is just getting the gem installed. I've seen quite a few of these problems here on stackoverflow but all seem a bit different or have really complicated solutions. Is there something I'm missing? Something simple? Something stupid? I can provide additional info from the out file if necessary. I've read that some people use SQLite for dev and test then MySQL in prod but that sounds like a pretty horrible idea.
我目前已经通过 MAMP 运行 MySQL。我不确定这是否是一个坏主意,我应该运行一个普通的 MySQl,但似乎我目前的问题只是安装 gem。我在 stackoverflow 上看到了很多这样的问题,但似乎都有点不同,或者有非常复杂的解决方案。有什么我想念的吗?简单的东西?有什么蠢事?如有必要,我可以从输出文件中提供其他信息。我读过一些人使用 SQLite 进行开发,然后在生产中测试 MySQL,但这听起来是一个非常可怕的想法。
采纳答案by Ryan Arneson
I ended up just installing a fresh copy of MySQL and not using MAMP and that did the trick. Also had to be sure to install the 64-bit version, not 32-bit.
我最终只是安装了一个新的 MySQL 副本,而不是使用 MAMP,这就成功了。还必须确保安装 64 位版本,而不是 32 位。
回答by sites
From https://github.com/brianmario/mysql2/issues/8
来自https://github.com/brianmario/mysql2/issues/8
just copied this in the console
刚刚在控制台中复制了这个
sudo apt-get install mysql-client libmysqlclient-dev
and worked!!
并且工作了!!
回答by Jarrett Coggin
I used Homebrew for Macto install mysql:
我使用Homebrew for Mac来安装 mysql:
brew install mysql
Then I used a gem command to install the mysql2 gem:
然后我使用 gem 命令来安装 mysql2 gem:
sudo gem install mysql2
回答by sameera207
This is mostly due to lack of mysql headers, Try to install mysql developer (mysql-devel) packages
这主要是由于缺少 mysql 头文件,请尝试安装 mysql developer (mysql-devel) 包
Normally this error comes when 'libmysqlclient-dev' package is missing
通常当'libmysqlclient-dev'包丢失时会出现这个错误
- if you are on linux try this link
- if you are on windows this url might help you
- 如果你在 linux 上试试这个链接
- 如果你在 Windows 上,这个url 可能对你有帮助
回答by hpcodecraft
I just ran into the same problem, using OS X Sierra and MAMP and Rails 5. I successfully installed the gem via
我刚刚遇到了同样的问题,使用 OS X Sierra 和 MAMP 以及 Rails 5。我通过以下方式成功安装了 gem
gem install mysql2 -- --with-mysql-config=/Applications/MAMP/Library/bin/mysql_config
After that, bundle install worked just fine.
之后,捆绑安装工作得很好。
回答by maniempire
You can follow this thread Errors Installing mysql2 gem via the Bundlerwhich explains the solution for Centos and this problem will be fixed, if you tweak the commands w.r.t your OS and you can be able to successfully install the mysql2 gem.
您可以按照此线程错误通过 Bundler 安装 mysql2 gem,它解释了 Centos 的解决方案,如果您调整操作系统的命令,并且您可以成功安装 mysql2 gem,则此问题将得到解决。
回答by John Langford
When I got this error, I was able to fix this by running:
当我收到这个错误时,我可以通过运行来解决这个问题:
gem install devtools
回答by Greg Benner
Just add MAMP mysql to PATH, then you can run bundle install as per normal.
只需将 MAMP mysql 添加到 PATH,然后您就可以正常运行 bundle install 了。
$ /Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot
$ /Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot
source: http://blog-en.mamp.info/2009/08/using-mysql-command-line-with-mamp.html
来源:http: //blog-en.mamp.info/2009/08/using-mysql-command-line-with-mamp.html