在 Windows 7 上安装 Ruby MYSQL2 gem

Posted

技术标签:

【中文标题】在 Windows 7 上安装 Ruby MYSQL2 gem【英文标题】:Ruby MYSQL2 gem installation on windows 7 【发布时间】:2013-10-01 14:06:45 【问题描述】:

我正在尝试在 Windows 7 上安装 mysql2 gem 我从 mysql 站点下载了连接器并将 libmysql.dll 放在 ruby​​200\bin 中

然后做 gem install mysql2

这些是我在这里变暗的结果吗?

Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
        ERROR: Failed to build gem native extension.

    C:/Ruby200/bin/ruby.exe extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
*** 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
        --without-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=C:/Ruby200/bin/ruby
        --with-mysql-dir
        --without-mysql-dir
        --with-mysql-include
        --without-mysql-include=$mysql-dir/include
        --with-mysql-lib
        --without-mysql-lib=$mysql-dir/
extconf.rb:37:in `<main>': undefined method `[]' for nil:NilClass (NoMethodError
)


Gem files will remain installed in C:/Ruby200/lib/ruby/gems/2.0.0/gems/mysql2-0.
3.13 for inspection.
Results logged to C:/Ruby200/lib/ruby/gems/2.0.0/gems/mysql2-0.3.13/ext/mysql2/g
em_make.out

【问题讨论】:

如其所示,查看:结果记录到 C:/Ruby200/lib/ruby/gems/2.0.0/gems/mysql2-0.3.13/ext/mysql2/g em_make.out 和还 mkmf.log 用于描述性错误。把它们贴在这里。它可能需要诸如提供“gem install mysql2 --with-MySQL-lib=”之类的标头。可以下载这些文件以允许安装,但请确保它与您的 gem 的 mod 级别匹配。我在包括 MySQL 的 Windows 8 上使用 BitNami Rubystack。 RailsInstaller 是一个非常流行的综合安装。 可能是原生安装gem的问题。你能安装其他像 bson_ext 这样的原生 gem 吗? 是的,谢谢你们的帮助,@R_G 是的,我需要通过下面的 gem 命令指定每个所需文件的位置,这就是为什么 gem install 看起来不一样文件夹我不确定,我试图远离捆绑安装程序,因为它可以帮助我更好地理解 Rails! Unable to install mysql2 gem on windows 7的可能重复 阅读我的问题顶部的黄色文本。这就是 mysql gem 和 mysql2 gem 无法安装的原因! ***.com/questions/30361280/… 【参考方案1】:

编辑 2014 年 9 月 30 日

当这个答案发布时,64 位 rails 安装程序不是推荐的版本 - 现在似乎人们开始更多地使用它。需要注意的是,当你下载 MySQL 连接器时,你需要下载 64 位或 32 位以对应你安装的 rails 版本。

令人惊讶的是,今天早上我很幸运地得到了答案,因为我碰巧正在寻找其他类似性质的东西。我不太清楚为什么没有一个简单的指南,因为它看起来非常简单!

由于某些原因,在安装 gem 时仅指定 mysql-dir 并不能与其他子目录一起使用,因此您需要手动设置参数。

对于遇到同样问题的其他人,我做了以下操作:

1) 从http://dev.mysql.com/downloads/connector/c/下载 MySql C 连接器

注意不要下载安装程序,下载适合您操作系统的 ARCHIVE 文件

下载 32 位或 64 位 ARCHIVE 以对应您安装的 rails 版本。

2) 将文件解压到 C:\mysql-connector

3) 然后运行:

 gem install mysql2 --platform=ruby -- '--with-mysql-lib="C:\mysql-connector\lib" --with-mysql-include="C:\mysql-connector\include" --with-mysql-dir="C:\mysql-connector"'

瞧,一切正常。

编辑 30/01/2014

我只需要在一台变砖的机器上进行全新安装,但步骤 3 中的命令不起作用,起作用的是:

gem install mysql2 --platform=ruby -- '--with-mysql-dir="C:\mysql-connector"'

我不太确定有什么区别,但这次似乎可以拾取目录,所以如果第一个不起作用,试试这个!

我认为这与您安装导轨的方式有关,这一次我使用了 railsinstaller,它似乎可以正确设置路径。

这里的很多结果似乎取决于您使用的 shell,很多人在使用 powershell 时遇到问题,所以我不建议使用它。我是在提升的命令提示符下执行此操作的。

最后,如果您在执行 RAILS S 时收到有关 mysql2 gem 的错误,您需要将 libmysql.dll 从 mysql 连接器的 LIB 目录复制到安装 rails 的 bin 目录。

【讨论】:

谢谢你,帮我节省了很多时间! 确保下载 32 位服务器和 32 位连接器。 github.com/oneclick/rubyinstaller/wiki/… 第二个代码使用 32 位版本的 mysql-connector 工作 下面我的回答涵盖了如果您将它们作为 Windows MySQL 安装程序的一部分安装会发生什么。 谢谢伙计。这有很大帮助。在 Windows 上安装 Rails 时苦苦挣扎,而 mysql gem 是我面临的唯一问题。再次感谢。【参考方案2】:

我尝试了@Mrk Fldig 的解决方案,但没有奏效... 那么解决问题的是:

    为 windows 7 32 位下载了最新的 MySQL Installer 使用以下命令安装 gem:gem install mysql2 --platform=ruby -- '--with-mysql-dir="C:/Program Files/MySQL/MySQL Connector C 6.1 6.1.2/"'

需要注意的一个陷阱是我将反斜杠 (\) 更改为普通斜杠 (/)。我用反斜杠尝试了相同的过程,但没有成功。

安装程序已在MySQL Connector C 6.1 6.1.2 目录中包含 MySQL 的 C 连接器。因此,只传递--with-mysql-dir 参数而不传递--with-mysql-lib--with-mysql-include 参数,会使gem 查看libinclude 目录的同一目录

【讨论】:

这也为我解决了这个问题。但我只是按照上述说明使用了存档。问题似乎是你所在的 shell。我在 msysgit bash shell 中运行,多个 --with 选项似乎失败了。你的把戏很好用。 在 CMD 上也适用于我。谢谢!【参考方案3】:

Ruby 2.1.3、Windows 8.1 和 MySQL Server 5.7 的步骤。所有 x64 位。

    下载Development Kit 提取的开发工具包。 运行 CMD 并转到提取开发工具包的目录 运行ruby dk.rb init 运行ruby dk.rb install 运行gem install mysql2 -- '--with-mysql-lib="c:\Program Files\MySQL\MySQL Server 5.7\lib" --with-mysql-include="c:\Program Files\MySQL\MySQL Server 5.7\include" --with-mysql-dir="c:\Program Files\MySQL\MySQL Server 5.7"'

【讨论】:

此解决方案适用于 Windows 10、Ruby 2.5.5、MySQL Server 5.7(所有 x64 位)。谢谢。【参考方案4】:

这对我在 Windows 8 64 位和使用 ruby​​ 64 位上的相同错误有效

    下载并安装 MySQL Server 5.6 64 位

    运行这个命令:

    gem install mysql2 -v '0.3.16' -- '--with-mysql-lib="c:\Program Files\MySQL\MySQL Server 5.6\lib" --with-mysql-include="c:\Program Files\MySQL\MySQL Server 5.6\include"'
    

希望对你有帮助

【讨论】:

很高兴知道这也有效,对于我的项目,我已经有一个远程数据库,所以我不需要安装! 顺便说一下,据我所知 railsinstaller 是 32 位的,因此按照以下说明需要 32 位库。【参考方案5】:

我已经尝试了所有提供的方法,但同样的错误一次又一次出现:(

幸运的是,旧版本安装没有任何错误!

gem uninstall mysql2
gem install mysql2 -v 0.2.6

【讨论】:

【参考方案6】:

尝试按照以下步骤操作:

我假设:

a) 你使用 windows7 b) C:\Ruby200-x64 上的 ruby​​ 2+ c) 安装在 ruby​​ 上的 rails 4+ d) WAMP 安装在 C:\wamp 上并正在运行

1) 卸载你的 myslq2 gem:

$ gem uninstall mysql2

2) 使用路径选项重新安装 mysql2 gem:

$ gem install mysql2 -- '--with-mysql-lib="C:\wamp\bin\mysql\mysql5.6.12\lib" --with-mysql-include="C:\wamp\bin\mysql\mysql5.6.12\include"'

3) 将你在 C:\wamp\bin\mysql\mysql5.6.12\lib 中找到的 libmysql.dll 复制到 C:\Ruby200-x64\bin 中

4) 在您的 Rails 应用程序中打开文件“Gemfile”并对其进行编辑以启用 mysql2,方法是添加:

gem 'mysql2'

5) 启动你的 Rails 服务器:

$ rails server

6) 打开浏览器并转到 localhost:3000/

【讨论】:

【参考方案7】:

我仍然对 mysql2 gem 有问题,但下面的方法帮助我在 Windows 环境上安装了带有 RoR 的 mysql。

第 1 步:Gem 文件更改:(app/Gemfile)

更新mysql2 --> mysql

第 2 步:更新 database.yml 文件 (app/config/database.yml)

更改适配器:mysql2 --> 适配器:mysql

主机:本地主机 --> 主机:127.0.0.1

第 3 步:下载 mysql-connector-c-noinstall-6.0.2-win32

第 4 步:将 mysql-connector-c-noinstall-6.0.2-win32\lib\libmysql.dll 文件复制到 C:\RailsInstaller\Ruby1.9.3\bin

第 5 步:bundle update && 启动 rails 服务器

【讨论】:

【参考方案8】:

这对我有用:

gem install mysql2 -- '--with-mysql-dir="C:\wamp\bin\mysql\mysql5.5.xx"'

已经搜索了几个小时,但没有看到建议的这种变化,所以希望它会对某人有所帮助!

【讨论】:

【参考方案9】:

还可以尝试在安装 gem 之前禁用您的防病毒软件。运行以下命令后,我的安装了:

gem install mysql2 --platform=ruby -- '--with-mysql-lib=
"C:\mysql-connector\lib" --with-mysql-include="C:\mysql-connector\include" --wit
h-mysql-dir="C:\mysql-connector"'

启用我的防病毒软件后,相同的命令不起作用,因为它正在将一些 ruby​​ 文件推送到胸部。 希望这对某人有所帮助。

【讨论】:

谢谢我到处找,但没有任何效果。这对我有用。【参考方案10】:

添加一些调整后它对我有用

gem install mysql2 --platform=ruby -- '--with-mysql-lib="C:\Program Files\MySQL\MySQL Connector C 6.1.5\lib" --with-mysql-include="C:\Program Files\MySQL\MySQL Connector C 6.1.5\include" --with-mysql-dir="C:\Program Files\MySQL\MySQL Connector C 6.1.5"

【讨论】:

嘿,是的,这就是第一个选项,很高兴它的排序!【参考方案11】:

对于 Cygwin,我可以整合各种步骤。

    使用 cygwin setup.exe 下载 gcc、g++、make、cmake 和 libmysqlclient-devel(来自 cygwin 端口) 从 mysql 站点下载适用于 windows 的 c/connector src。我下载了6.x版本。或者下载 libmysqlclient-devel 的版本(不知道从哪里下载) 解压 cd dir_connector 不需要且有风险,但如果 cygwin libmysqlclient-devel 版本为 5.5.40 ,则将 dir_connector/VERSION 文件的版本更改为 5.5.40 mkdir 构建 cd 构建 在 stdlib.h 中注释 dtoa,否则编译失败 cmake .. 制作 进行安装 gem install mysql2 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

【讨论】:

【参考方案12】:

Ruby 安装程序 rubyinstaller-devkit-2.5.3-1-x64

Mysql 连接器:mysql-connector-c-6.1.11-win32 https://downloads.mysql.com/archives/c-c/?version=6.1.2&os=src

Gem 安装: gem install mysql2 --platform=ruby -- --with-mysql-lib="c:\mysql-connector-c-6.1.11-win32"

【讨论】:

赞成,因为 JJJ 在那里有点刻薄(假设 JJJ 被否决),欢迎来到 *** 一般来说,你应该给我更多的写你的答案,而答案可能是正确的你应该解释步骤;-)【参考方案13】:

我用我的 64 位电脑下载了 32 位的 devkit,但是我意识到 railsinstaller 显然默认安装了 32 位版本,所以我已将所有设施都定向为 32 位。

初始化 ruby​​ devkit dk.rb init

下载mysql连接器32位,放在mysql-connector C:\mysql-connector

您应该知道,当您解压缩文件时,它会创建一个同名的子文件夹,并且可能会出错。

然后使用上面列出的第二个命令:

gem install mysql2 - platform = ruby - '- with-mysql-dir = "C: \ mysql-connector"' 

这是我找到的解决方案,因为我遇到了同样的问题。

【讨论】:

【参考方案14】:

在 Windows 7 上,我发现现有答案提供了部分解决方案,但我仍然无法安装它。

我遇到的问题是,我使用的 MySQL Community Edition Windows 安装程序坚持将连接器放在名为 C:\MySQL\MySQL Connector C 6.1.3 之类的文件夹中。 gem 中的构建过程报告它找不到 "C:\MySQL\MySQL" (在此之前,当我在 Program Files 中找到它时,它抱怨它找不到 "C:\Program\includes" )所以很明显,这些空间是个问题,我找不到它可以理解的逃避它们的方法——也许有人会提出其中的一个建议。

因为我不确定更改这些是否会破坏安装,所以一旦我意识到为什么会出现问题,我就从命令行创建了一个符号链接(从cmd 比 powershell 更容易),如下所示:

C:\MySQL> mklink /D ConnectorC ".\MySQL Connector C 6.1.3"

然后我可以使用以下安装行:

 gem install mysql2 --platform=ruby -- '--with-mysql-dir="C:/MySQL/ConnectorC/"'

这工作正常。

另外,当我尝试使用它时,我遇到了this problem,因此了解将 MySQL lib 文件 从 C 连接器 lib 文件夹 移动可能会有所帮助。

【讨论】:

【参考方案15】:

我完全靠运气成功了,但经过一个小时的地狱后,我觉得我应该分享我的解决方案,显然非常缩短,但很多步骤我认为你可以自己弄清楚如何做.

我的机器是Win 7 64bit。我能够安装版本 0.3.16

    安装 ruby​​ 版本 2.0.0p481 (?) Devkit 等等等等 安装 rails 版本 4.0.0 下载Mysql Connector C 64位zip文件,以mysqlc形式放入C盘 从那个 bin 中取出 DLL,把它放到 ruby​​ 的 lib 中 gem install mysql2 -- -- with-mysql-dir="C:\mysqlc"

【讨论】:

【参考方案16】:

这些都对我不起作用,直到我意识到我安装了 64 位版本的 DevKit。于是我从MySQL website下载了64位MySQL Connector/C

并使用“with-mysql-dir”选项安装 gem

【讨论】:

【参考方案17】:

这是我为 windows server 2012 sp2 所做的。没有其他工作...

收到错误后'while installing mysql2 (0.3.17), and bundler cannot continue' Make sure that 'gem install mysql2 -v '0.3.17' succeeds...

1) 从http://dev.mysql.com/downloads/connector/c/下载 MySql C 连接器

2)Extract the file to C:\mysql-connector

3)gem install mysql2 -v '0.3.17' --platform=ruby -- '--with-mysql-dir="C:\mysql-connector"'

注意:上面的 -v '0.3.17',没有这个就不行。

4) bundle install --> 终于成功了。

【讨论】:

以上是关于在 Windows 7 上安装 Ruby MYSQL2 gem的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Windows 7 上安装 MySQL2 gem

windows10下搭建mysql5.7的主从同步

如何在windows的rails上安装ruby

尝试在 ruby​​ 上安装 gem(Windows 10)[重复]

在 Windows 上安装 taglib-ruby gem

ruby on rails 在制作新应用程序时显示未知编码名称。在 Windows 7 上,导轨 4.2