35

我正在尝试在 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
4

17 回答 17

108

编辑 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 目录。

于 2013-09-26T08:29:20.350 回答
7

我已经尝试过@Mrk Fldig 的解决方案,但它没有用......所以解决问题的是:

  1. 下载了适用于 windows 7 32 位的最新 MySQL安装程序
  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-libor--with-mysql-include参数的参数,会使 gem 为libinclude目录查看同一目录

于 2013-12-13T13:54:59.520 回答
6

Steps for Ruby 2.1.3, Windows 8.1 and MySQL Server 5.7. All x64 bit.

  1. Download Development Kit
  2. Extracted Development Kit.
  3. Run CMD and go to dir where is Development Kit extracted
  4. Run ruby dk.rb init
  5. Run ruby dk.rb install
  6. Run 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"'
于 2014-10-09T23:18:49.920 回答
1

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

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

gem uninstall mysql2
gem install mysql2 -v 0.2.6
于 2014-05-30T12:24:35.237 回答
1

这对我来说适用于 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"'
    

希望这可以帮助

于 2014-08-12T02:11:18.927 回答
0

尝试按照以下步骤操作:

我假设:

  • 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/

于 2014-03-20T15:12:24.310 回答
0

还可以尝试在安装 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​​ 文件推送到胸部。希望这可以帮助某人。

于 2014-06-26T10:23:44.657 回答
0

我仍然对 mysql2 gem 有问题,但下面的方法帮助我在 Windows Env 上安装了带有 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 server

于 2014-05-21T09:15:19.943 回答
0

对于 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. 光盘构建
  8. 在 stdlib.h 中注释 dtoa,否则编译失败
  9. 制作..
  10. 制作
  11. 进行安装
  12. gem install mysql2 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
于 2014-11-14T08:12:50.150 回答
0

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

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"
于 2014-08-18T19:08:22.127 回答
0

这对我有用:

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

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

于 2014-05-31T14:50:47.667 回答
0

Ruby 安装程序 ruby​​installer-devkit-2.5.3-1-x64

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

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

于 2019-03-23T12:07:27.997 回答
-1

我用我的 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"' 

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

于 2014-02-15T20:29:55.600 回答
-1

在 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/"'

这工作正常。

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

于 2014-04-09T09:24:09.583 回答
-1

在我意识到我安装了 64 位版本的 DevKit 之前,这些都对我不起作用。所以我从MySQL 网站下载了 64 位 MySQL Connector/C

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

于 2014-09-27T12:56:22.923 回答
-1

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

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

  1. 安装 ruby​​ 版本 2.0.0p481 (?)
  2. 开发工具包啦啦啦
  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"
于 2014-07-26T21:16:30.473 回答
-1

这是我为 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--> 最后,成功。

于 2016-05-31T14:20:54.750 回答