安装mysql2时发生错误:无法构建gem本机扩展


485

尝试mysql2为Rails 安装gem 时遇到一些问题。当我尝试通过运行安装它时,bundle install或者gem install mysql2出现以下错误:

安装mysql2时出错:错误:无法构建gem本机扩展。

如何解决此问题并成功安装mysql2


在我的情况下,ruby 2.1没有显示错误,但是冻结了几分钟。Spacemonkey的答案已解决。
Lucio

Answers:


915

在Ubuntu / Debian和其他使用aptitude的发行版上:

sudo apt-get install libmysql-ruby libmysqlclient-dev

软件包libmysql-ruby已被淘汰,并由代替ruby-mysql是我找到解决方案的地方。

如果上述命令由于libmysql-ruby找不到而无法使用,则以下内容就足够了:

sudo apt-get install libmysqlclient-dev

在Red Hat / CentOS和其他使用yum的发行版上:

sudo yum install mysql-devel

在带有Homebrew的 Mac OS X上:

brew install mysql

5
我在Windows 7 ...任何想法上有同样的问题?上面的命令对我没有用..
femi 2011年

37
您好,我将Ubuntu 12.04与Ruby 1.9.3和Rails 3.2.8结合使用,就我而言,安装libmysqlclient-dev就足够了。
SMMousavi

2
如果您使用的是Mac OSX:更新至最新版本的XCode并安装开发工具。我遇到了相同的mysql安装问题(即使使用--with-mysql-config = / usr / local / mysql / bin / mysql_config)
Americo Savinon

2
不需要libmysql-ruby,因为我已经通过RVM安装了Ruby
Michael Lang


60

我在Mac上并使用自制软件安装开源程序。我确实必须安装mac Dev工具才能安装自制软件,但是在那之后很简单:

brew install mysql

安装mysql。从那以后我就没有mysql gem问题。


3
这样做之后我还是出错了。我在执行mysql2 gem时应该通过一些选项吗?
hnprashanth 2012年

运行此程序后,我在Mac OSX Lion上安装mysql2 ruby​​ gem没问题。
KrisG 2012年

3
如果这样做没有帮助,请尝试brew link mysql --force
Chuck Batson

34

这是Windows用户的解决方案,希望对您有所帮助!

在Windows上将MySQL与Rails 3一起使用

  • 安装railsinstaller- > www.railsinstaller.org(我将其安装到c:\ Rails)

  • 安装MySQL(我使用MySQL 5.5)-> dev.mysql.com/downloads/installer/

---用于mySQL安装---

如果您尚未安装这两个文件,则可能需要它们才能使MySQL继续运行

vcredist_x86.exe-> http://www.microsoft.com/download/en/details.aspx? id = 5555 dotNetFx40_Full_x86_x64.exe-> http://www.microsoft.com/download/en/details.aspx?id=17718

使用默认安装开发人员计算机

-MySQL服务器配置-
端口:3306
Windows服务名称:MySQL55
mysql root密码:root(您可以稍后更改)
(用户名:root)
-MySQL服务器配置-

---用于mySQL安装---


---安装mysql2 Gem ---

重要:使用Git Bash命令行(通过railsinstaller安装)-> start / Git Bash

gem install mysql2 -'-- with-mysql-lib =“ c:\ Program Files \ MySQL \ MySQL Server 5.5 \ lib“ --with-mysql-include =” c:\ Program Files \ MySQL \ MySQL Server 5.5 \ include“'

现在,gem应该已经正确安装了,

最后从复制libmysql.dll文件
C:\ Program Files \ MySQL \ MySQL Server 5.5 \ lib

C:\ Rails \ Ruby1.9.2 \ bin ---安装mysql2 Gem-


现在,如果不确定如何使用MySQL创建Rails 3应用,现在就可以在MySQL上使用Rails应用了。


---获取与MySQL一起使用的Rails 3应用程序---

打开命令提示符(不是Git Bash)-> start / cmd
导航到您的文件夹(c:\ Sites)
创建新的Rails应用程序

rails new world

删除文件c:\ Sites \ world \ public \ index.html
编辑文件c:\ Sites \ world \ config \ routes.rb
添加此行-> root:to =>'cities#index'

打开命令提示符(生成视图和控制器)

rails generate scaffold city ID:integer Name:string CountryCode:string District:string Population:integer



编辑文件c:\ Sites \ world \ app \ models \ city.rb如下所示

class City < ActiveRecord::Base
 set_table_name "city"
end

编辑文件c:\ Sites \ world \ config \ database.yml,如下所示

development:
adapter: mysql2
encoding: utf8
database: world
pool: 5
username: root
password: root
socket: /tmp/mysql.sock

添加到gemfile

gem 'mysql2'

打开命令提示符窗口cmd,而不是Git Bash(运行您的应用程序!)
导航到您的应用程序文件夹(c:\ Sites \ world)

rails s

在此处打开浏览器-> http:// localhost:3000

-获取与MySQL一起使用的Rails 3应用程序-


谢谢,问题是我使用了Widnows PowerShell,而不是正常的命令提示符。现在它正在工作:)
Danpe 2012年

主机必须为127.0.0.1,并且如果密码为数字,则必须在引号中加上“ 123456”,否则我们可以正常键入ex admin123
duykhoa,2012年

3
使用XAMPP:gem install mysql2 -- --with-mysql-dir=C:\xampp\mysql
Mifeng

查看路径--with-mysql-include:gem install mysql2---platform = ruby​​ --with-mysql-lib =“ d:\ mariadb \ lib” --with-mysql-include =“ d:\ mariadb \ include \ mysql”
Ivan 2014年

@Mifeng对我来说很棒,但是我使用的是GitBash,不需要-- --with-mysql-dir="C:\xampp\mysql"我的引号被删除。谢谢
Mutmatt 2014年

20

我有几台计算机,分别是32位和64位处理器,它们运行在Maverick(10.10)版本的Ubuntu Linux上。

我遇到了同样的问题,对我来说, sudo apt-get install libmysql-ruby libmysqlclient-dev 完成了任务!!!


19

对于MacOS Mojave

gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include


以及MacOS Catalina
Vlad

17

MacOS用户的另一种方法

如果您使用“酿造”来安装mysql:

gem install mysql2 -v 'x.x.x' -- --with-mysql-config=/usr/local/Cellar/mysql/y.y.y/bin/mysql_config

xxx =您要安装的mysql2 gem
的版本yyy =您已ls /usr/local/Cellar/mysql找到可安装的mysql的版本。


从这里提出的所有问题中尝试了〜10个答案...您已解决。谢谢:)
Stan 2015年


7

如果您使用的是yum,请尝试:

sudo yum install mysql-devel

它在基于CentOS的Amazon EC2微型实例中为我工作。
列侬

5

这一次在Windows中解决了我的问题:

subst X: "C:\Program files\MySQL\MySQL Server 5.5" 
gem install mysql2 -v 0.x.x --platform=ruby -- --with-mysql-dir=X: --with-mysql-lib=X:\lib\opt 
subst X: /D

我将要发布源代码,但是我看到用户Ritesh Kumar已经这样做了。所以他的功绩,不是我的。
2011年

如果您的lib没有opt文件夹:gem install mysql2 --platform=ruby -- --with-mysql-dir=X: --without-opt-dir
JuniorMayhé2014年

5

如果您仍然遇到问题...。

尝试安装

   sudo apt-get install ruby1.9.1-dev

4

我在Windows 7上遇到了这个问题。这显然是不兼容的问题,解决方案如下:

libmySQL.dll从较旧的InstantRails安装程序下载文件。可从InstantRails GitHub存储库中获得

接下来,将该文件复制到您的Ruby / bin文件夹中。

现在,你很好;)


1
嗯 :(我试过,但试图运行时,仍然得到有误差bundle install
aakoch

3

我也收到此错误。通过安装开发包解决。我正在使用拱门,它是:

sudo pacman -S base-devel

哪个安装了:

m4, autoconf, automake, bison, fakeroot, flex, libmpc, ppl, cloog-ppl, elfutils, gcc,
libtool, make, patch, pkg-config

但我认为它实际上需要make和gcc。错误输出说(在我的机器上,以及其他):

“您必须首先安装开发工具。”

因此,这是一个明显的决定,并且很有帮助。


3

您必须安装一些依赖项

sudo apt-get install libmysql-ruby libmysqlclient-dev


3

就我而言,这有助于:

$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"

然后:

gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/' -- --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib

结果:

Building native extensions with: '--with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib'
This could take a while...
Successfully installed mysql2-0.5.2
Parsing documentation for mysql2-0.5.2
Installing ri documentation for mysql2-0.5.2
Done installing documentation for mysql2 after 0 seconds
1 gem installed

请参阅此帖子(警告:内部为日语)。


3

在Ubuntu上(18.04)

我能够通过运行以下命令解决此问题:

sudo apt-get install build-essential libmysqlclient-dev
gem install mysql2

参考


2

我在Mac上遇到此错误,发现我需要从mysql 32bit升级到mysql 64 bit才能使此错误消失。我在具有ruby 1.9.2和rails3.0.0的Intel Macbook Pro上运行OSX 10.6

我还需要安装xcode才能获得编译gem所需的unix实用程序,例如“ make”。

一旦完成此操作,我就可以运行gem install mysql和gem install mysql2而没有错误。


1

对于Windows用户:例如,设置lib并包含mysql的路径,如果您使用xampp,则可以这样:

gem install mysql2 -- '--with-mysql-lib="C:\xampp\mysql\lib" --withmysql-include="C:\xampp\mysql\include"'

1

解决方案仅适用于Mac OS X

如果您使用自制软件安装了MySQL,那么对我有用的是卸载MySQL,然后通过MySQL网站(https://www.mysql.com/)安装MySQL Community Edition 。

安装后,如果遇到权限被拒绝的问题,只需将命令重新输入到gem install mysql2或(如有必要)即可sudo gem install mysql2


0

我通过以下方式在Mac OS X 10.6.6上构建了gem:1)确保已安装Developer Tools软件包2)从源代码下载当前的MySQL软件包(以我的情况为5.5.8)3)从cmake.org安装cmake工具4 )按照mysql发行文件中INSTALL-SOURCE 2.11节中的说明进行操作。5)sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include gem成功构建,但是rdoc和ri抱怨文档中有两个错误。但是现在当我尝试要求'mysql2'时,我得到了

LoadError: no such file to load -- mysql2/mysql2

我希望得到的错误是找不到libmysqlclient.16.dylib,因为我们在另一篇文章中找到了答案(搜索install_name_tool)。

我的$ PATH中有/ usr / local / mysql(这是我的源文件和构建文件所在的位置),所以我有些困惑。如果有人有任何想法,我会在几个小时的睡眠后再回来检查。



0

纠正mysql-dev问题后,您可能需要删除错误的mysql2安装。$ bundle安装后,请仔细查看消息。您可能需要

rm -rf vendor/cache/
rm -rf ./Zentest

这将清除错误的mysql2安装,以便最终的$ bundle安装可以创建一个好的。



0

得到了“您必须首先安装开发工具”。升级到Mac OS X Mountain Lion后尝试安装mysql2 gem时发生错误。显然,执行此升级将删除命令行编译器。

修理:

  • 我卸载了非常旧的Xcode版本(在/ Developer / Library中运行了卸载脚本)。然后删除/ Developer目录。
  • 进入AppStore并下载Xcode。
  • 启动Xcode并进入“首选项”->“下载”,并安装了命令行工具。


0

我只想为Mac用户添加此答案。

在更新xcode之前,我的服务器运行良好。在启动我的Rails服务器时,错误显示如下

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /Users/user/.rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb --with-mysql-
    checking for rb_thread_blocking_region()... /Users/user/.rvm/rubies/ruby-1.9.3-  
    p448/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an    
    executable file. (RuntimeError)

并建议在错误消息的末尾安装mysql2 gem。因此,当我尝试安装它时,出现了上述问题中提到的错误。我得到的错误如下

ERROR:  Error installing mysql2:
ERROR: Failed to build gem native extension.

因此,正如本文中所建议的那样,我尝试了“ brew install mysql”,然后退出,说已经安装了mysql版本。但是在警告说之前

Warning: You have not agreed to the Xcode license.
Builds will fail! Agree to the license by opening Xcode.app or running:
xcodebuild -license

然后,我尝试了此操作,sudo xcodebuild -license并在最后输入“同意”。您必须是root用户才能同意许可。

之后,我再次尝试安装捆绑软件,然后一切正常。[即使由于xcode更新,我的塔架也出现了问题。]


0

libmysql-ruby 已被淘汰并更换。新命令:

 sudo apt-get install ruby-mysql libmysqlclient-dev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.