【问题标题】:Ruby MYSQL2 gem installation on windows 7在 Windows 7 上安装 Ruby MYSQL2 gem
【发布时间】: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!
  • 阅读我的问题顶部的黄色文本。这就是 mysql gem 和 mysql2 gem 无法安装的原因! stackoverflow.com/questions/30361280/…

标签: ruby gem mysql2


【解决方案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 的解决方案,但没有奏效... 那么解决问题的是:

  1. 为 windows 7 32 位下载了最新的 MySQL Installer
  2. 使用以下命令安装 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 位。

  1. 下载Development Kit
  2. 提取的开发工具包。
  3. 运行 CMD 并转到提取开发工具包的目录
  4. 运行ruby dk.rb init
  5. 运行ruby dk.rb install
  6. 运行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 位上的相同错误有效

  1. 下载并安装 MySQL Server 5.6 64 位
  2. 运行这个命令:

    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,我可以整合各种步骤。

          1. 使用 cygwin setup.exe 下载 gcc、g++、make、cmake 和 libmysqlclient-devel(来自 cygwin 端口)
          2. 从 mysql 站点下载适用于 windows 的 c/connector src。我下载了6.x版本。或者下载 libmysqlclient-devel 的版本(不知道从哪里下载)
          3. 解压
          4. cd dir_connector
          5. 不需要且有风险,但如果 cygwin libmysqlclient-devel 版本为 5.5.40 ,则将 dir_connector/VERSION 文件的版本更改为 5.5.40
          6. mkdir 构建
          7. cd 构建
          8. 在 stdlib.h 中注释 dtoa,否则编译失败
          9. cmake ..
          10. 制作
          11. 进行安装
          12. 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 被否决),欢迎来到 StackOverflow 一般来说,你应该给我更多的写你的答案,而答案可能是正确的你应该解释步骤;-)
            【解决方案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

                1. 安装 ruby​​ 版本 2.0.0p481 (?)
                2. Devkit 等等等等
                3. 安装 rails 版本 4.0.0
                4. 下载Mysql Connector C 64位zip文件,以mysqlc形式放入C盘
                5. 从那个 bin 中取出 DLL,把它放到 ruby​​ 的 lib 中
                6. 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 --> 终于成功了。

                    【讨论】:

                      猜你喜欢
                      • 2011-07-19
                      • 2014-04-16
                      • 2014-02-03
                      • 2011-08-09
                      • 2013-04-24
                      • 2015-08-02
                      • 2011-09-16
                      • 1970-01-01
                      • 2014-01-29
                      相关资源
                      最近更新 更多