ChatGPT解决这个技术问题 Extra ChatGPT

安装 mysql2 时出错:无法构建 gem 原生扩展

我在尝试为 Rails 安装 mysql2 gem 时遇到了一些问题。当我尝试通过运行 bundle installgem install mysql2 安装它时,它给了我以下错误:

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

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

在我的情况下,ruby 2.1 没有显示错误,但它冻结了几分钟。 Spacemonkey 的回答修复了它。

D
Dave Powers

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

sudo apt-get install libmysql-ruby libmysqlclient-dev

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

如果上述命令由于找不到 libmysql-ruby 而不起作用,则以下内容应该足够了:

sudo apt-get install libmysqlclient-dev

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

sudo yum install mysql-devel

在带有 Homebrew 的 Mac OS X 上:

brew install mysql

我在 Windows 7 上也有同样的问题。有什么想法吗?上面的命令对我不起作用..
您好,我正在使用带有 Ruby 1.9.3 和 Rails 3.2.8 的 Ubuntu 12.04,就我而言,安装 libmysqlclient-dev 就足够了。
如果您使用的是 Mac OSX:更新到最新版本的 XCode 并安装开发工具。我有同样的mysql安装问题(即使使用 --with-mysql-config=/usr/local/mysql/bin/mysql_config )
不需要 libmysql-ruby,因为我通过 RVM 安装了 Ruby
对于 Windows,请尝试 stackoverflow.com/questions/19014117/… 中的勾选答案
D
Dave Powers

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

brew install mysql

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


即使在这样做之后我也会出错。当我做 gem i mysql2 时我应该传递一些选项吗?
运行此之后,我在 Mac OSX Lion 上安装 mysql2 ruby gem 没有问题。
如果这没有帮助,请尝试 brew link mysql --force
@ChuckBatson 完美!我安装了 mysql@5.7,所以我只需要做 brew link mysql@5.7 --force
A
Allen

对于 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
解决了这个问题:clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [mysql2.bundle] Error 1。谢谢!
我被困了几个小时。只有这个解决方案有效。
F
Francois

这是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 使用默认安装 Developer Machine -MySQL Server Config- 端口:3306 windows 服务名称:MySQL55 mysql root pass :root(您可以稍后更改)(用户名:root)-MySQL Server Config- --- 用于 mySQL 安装 ---

--- 安装 mysql2 Gem --- 重要:使用 Git Bash 命令行执行此操作(这是使用 railsinstaller 安装的)-> 启动/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 应用程序,您现在可以将 Rails 应用程序与 MySQL 一起使用...

--- 使用 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'

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

rails s

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

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


谢谢,问题是我使用了 widnows PowerShell 而不是正常的命令提示符。现在它正在工作:)
主机必须是 127.0.0.1,如果密码是数字,必须加上引号 ex '123456' 否则我们可以正常输入 ex admin123
使用 XAMPP:gem install mysql2 -- --with-mysql-dir=C:\xampp\mysql
查看路径 --with-mysql-include: gem install mysql2 -- --platform=ruby --with-mysql-lib="d:\mariadb\lib" --with-mysql-include="d:\mariadb \包括\mysql"
@Mifeng 对我很有用,但我正在使用 GitBash 并且需要 -- --with-mysql-dir="C:\xampp\mysql" 没有引号,我的 `` 被剥离了。谢谢
I
Irani

在 Ubuntu (18.04) 上

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

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

reference


在 Ubuntu 20.04 上对我有用的东西
a
aruanoc

MacOS用户的另一种方式

如果您使用“brew”安装 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 = 您已安装的 mysql 的版本 ls /usr/local/Cellar/mysql 找到它。


从这里提出的各种问题中尝试了约 10 个答案......你解决了它。谢谢 :)
D
Dorian

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

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


J
João Pereira

您是否尝试过使用

 gem install mysql -- --with-mysql-lib=/usr/lib/mysql/lib 

指定基本目录的位置以及完成 gem 安装所需的 MySQL 库的路径?

来源:MySQL Gem Install ERROR: Failed to build gem native extension MySQL Forums :: Ruby :: Help needed with installing MySQL binding for Ruby


工作得很好。我必须使用不同的路径,我通过调用 which mysql 然后从那里找到 lib 目录找到了该路径。
A
Andrew Marshall

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

sudo yum install mysql-devel

它在基于 CentOS 的 Amazon EC2 微实例中为我工作。
C
Carlos Pardilla

这在 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 已经这样做了。所以他的优点,不是我的。
如果您的库没有 opt 文件夹:gem install mysql2 --platform=ruby -- --with-mysql-dir=X: --without-opt-dir
c
capu

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

尝试安装

   sudo apt-get install ruby1.9.1-dev

A
Aurelio

就我而言,这有帮助:

$ 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

See this post(警告:里面有日语)。


A
Ali

在 Debian Stretch 上,对我有用的包是 default-libmysqlclient-dev

sudo apt-get update && apt-get install -y default-libmysqlclient-dev


D
Dave Powers

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

从旧版 InstantRails 安装程序下载 libmySQL.dll 文件。它可从 InstantRails GitHub repo 获得。

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

现在,你可以走了;)


人力资源管理系统。 :( 我试过这个,但在尝试运行 bundle install 时仍然出现错误。
a
arty

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

sudo pacman -S base-devel

其中安装:

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

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

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

所以这是一个显而易见的决定,而且很有帮助。


v
vipin

您必须安装一些依赖项

sudo apt-get install libmysql-ruby libmysqlclient-dev

Y
Yonela Nuba

我可以看到大多数人都找到了这个问题的解决方案,这主要是因为但不限于缺少包,这发生在我清除 mysql 并重新安装它之后。我必须运行这个命令才能解决我的问题:

sudo apt-get install libmysqlclient-dev

这个命令帮助我解决了我的问题


l
lofte

我在我的 Mac 上遇到了这个错误,发现我需要从 mysql 32 位升级到 mysql 64 位才能让这个错误消失。我在带有 ruby 1.9.2 和 rails3.0.0 的英特尔 macbook pro 上运行 OSX 10.6

我还需要安装 xcode 以获得编译 gem 所需的诸如“make”之类的 unix 实用程序。

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


t
tobinjim

我得到了在 Mac OS X 10.6.6 上构建的 gem 1)确保安装了开发工具包 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 (这是我的源文件和构建文件所在的位置),所以我有点难过。如果有人有任何想法,我会在睡几个小时后回来查看。


A
Arman Ortega

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

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

t
the12

解决方案仅适用于 Mac OS X

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

安装后,如果您遇到权限被拒绝问题,只需重新输入命令 gem install mysql2 或必要时输入 sudo gem install mysql2


R
Ritesh Kumar

如果仍然出现错误,请按照在 Rails 3 上安装 mysql2 gem 的步骤 -

http://rorguide.blogspot.com/2011/03/installing-mysql2-gem-on-ruby-192-and.html

大多数用户都能够安装mysql2 gem。


m
mmell

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

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

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


C
Community

下载正确版本的 mysqllib.dll 然后将其复制到 ruby bin 对我来说真的很有效。按照这个链接请mysql2 gem compiled for wrong mysql client library


S
Sunil D.

得到“你必须先安装开发工具”。升级到 Mac OS X Mountain Lion 后尝试安装 mysql2 gem 时出错。显然进行此升级会删除命令行编译器。

修理:

我卸载了我非常旧版本的 Xcode(在 /Developer/Library 中运行卸载脚本)。然后删除 /Developer 目录。

去 AppStore 下载 Xcode。

启动 Xcode 并进入 Preferences -> Downloads,并安装命令行工具。


A
Amrit Dhungana

您遇到此问题是因为您尚未安装 MySql。在安装 mysql2 gem 之前。安装 MySQL。之后将安装 mysql2 gem。


S
Sony Mathew

我只是想专门为 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 更新,我的塔也有问题。]


J
Jerome

libmysql-ruby 已被淘汰和替换。新命令:

 sudo apt-get install ruby-mysql libmysqlclient-dev

J
Jean-Roch B.

在 ubuntu 20.04 LTS 下,这是唯一对我有用的解决方案:

sudo apt-get install ruby-mysql2

L
Lane

根据 https://github.com/brianmario/mysql2/issues/1175 ,我通过

gem install mysql2 -- \
 --with-mysql-lib=/usr/local/Cellar/mysql/8.0.26/lib \
 --with-mysql-dir=/usr/local/Cellar/mysql/8.0.26 \
 --with-mysql-config=/usr/local/Cellar/mysql/8.0.26/bin/mysql_config \
 --with-mysql-include=/usr/local/Cellar/mysql/8.0.26/include