在Windows 7上安装Ruby MYSQL2 gem

时间:2013-09-25 19:58:41

标签: ruby gem mysql2

我正在尝试在Windows 7上安装mysql2 gem我从mysql站点下载了连接器并将libmysql.dll放在ruby200 \ 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

17 个答案:

答案 0 :(得分:104)

EDIT 30/09/2014

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

令人惊讶的是,由于我正好在寻找类似性质的其他东西,所以我很早就很幸运。我不太清楚为什么没有一个简单的指南,因为它看起来非常直接!

出于某种原因,在安装gem时只指定mysql-dir不会选择其他子目录,因此您需要手动设置参数。

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

1)从http://dev.mysql.com/downloads/connector/c/

下载MySql C连接器

注意请勿下载安装程序,下载操作系统的ARCHIVE

下载32位或64位ARCHIVE以符合您安装的导轨版本。

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

Voila一切正常。

EDIT 30/01/2014

我只需要在一台砖砌机器上进行全新安装,步骤3中的命令不起作用,工作原理是什么:

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

我不太确定区别是什么,但这次它似乎正好拿起目录,所以如果第一个没有用,试试这个吧!

我认为这与你如何安装rails有关,这一次我使用了railsinstaller,它似乎正确地设置了路径。

这里的很多结果似乎取决于你使用的shell,很多人都遇到了PowerShell的问题所以我不建议使用它。我是在一个提升的命令提示符下完成的。

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

答案 1 :(得分:7)

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

  1. 为Windows 7 32位
  2. 下载了最新的MySQL Installer
  3. 使用以下命令安装gem:gem install mysql2 --platform=ruby -- '--with-mysql-dir="C:/Program Files/MySQL/MySQL Connector C 6.1 6.1.2/"'
  4. 要注意的一个缺陷是我将反斜杠(\)更改为普通斜杠(/)。我用反斜杠尝试了相同的程序,它没有用。

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

答案 2 :(得分:6)

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

答案 3 :(得分: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"'
    
  3. 希望这有帮助

答案 4 :(得分:1)

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

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

gem uninstall mysql2
gem install mysql2 -v 0.2.6

答案 5 :(得分:0)

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 install mysql2 --platform = ruby​​---with-mysql-lib =“ c:\ mysql-connector-c-6.1.11-win32”

答案 6 :(得分:0)

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

  1. 使用cygwin setup.exe下载gcc,g ++,make,cmake和libmysqlclient-devel(来自cygwin端口)
  2. 从mysql站点下载c / connector src for windows。我下载了6.x版本。或者下载libmysqlclient-devel的版本(不确定从哪里开始)
  3. 解压缩
  4. cd dir_connector
  5. 不需要和RISKY,但如果cygwin libmysqlclient-devel版本是5.5.40,那么将dir_connector / VERSION文件的版本更改为5.5.40
  6. mkdir build
  7. cd build
  8. 在stdlib.h中注释dtoa,否则编译失败
  9. cmake ..
  10. 制作
  11. make install
  12. gem install mysql2 - --with-mysql-config = / usr / local / mysql / bin / mysql_config

答案 7 :(得分: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文件推送到胸部。 希望这有助于某人。

答案 8 :(得分:0)

这对我有用:

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

一直在寻找几个小时,并没有看到这个变化建议,所以希望它会帮助别人!

答案 9 :(得分:0)

我仍然遇到mysql2 gem的问题,但是下面的方法帮助我在Windows Env上使用RoR安装mysql。

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

更新mysql2 - &gt; MySQL的

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

更改适配器:mysql2 - &gt; adapter:mysql

host:localhost - &gt;主持人: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步:捆绑更新&amp;&amp;启动rails服务器

答案 10 :(得分: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 /

答案 11 :(得分:-1)

我凭借纯粹的运气成功地获得了成功,但是经过一个小时的地狱之后,我觉得我应该分享我的解决方案,显然已经缩短了很多但我认为你可以自己弄清楚如何做的很多步骤

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

  1. 安装ruby版本2.0.0p481(?)
  2. Devkit blah blah
  3. 安装rails版本4.0.0
  4. 下载Mysql Connector C 64位zip文件,将其作为mysqlc放入C盘
  5. 从该bin获取DLL,将其放入ruby的库中
  6. gem install mysql2 - - with-mysql-dir =“C:\ mysqlc”

答案 12 :(得分:-1)

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

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"

答案 13 :(得分:-1)

在我意识到我安装了64位版本的DevKit之前,这些都不适用于我。所以我从MySQL website

下载了64位MySQL Connector / C.

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

答案 14 :(得分:-1)

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

我遇到的问题是我使用的MySQL Community Edition Windows安装程序坚持将连接器放在名为C:\MySQL\MySQL Connector C 6.1.3之类的文件夹中。 gem中的构建过程报告说它无法找到&#34; C:\ MySQL \ MySQL&#34; (在此之前,当我在程序文件中使用它时,它抱怨它无法找到&#34; C:\ Program \ includes&#34;)所以很明显这些空格是一个问题我无法找到一种逃避它的方式,它可以理解 - 可能有人能够建议其中一种。

因为我不确定更改这些是否会破坏安装,一旦我意识到问题出现的原因我只是从命令行创建了一个符号链接(从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因此,请注意从C Connector lib文件夹移动MySQL lib文件可能会有所帮助

答案 15 :(得分:-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 - &gt;最后,成功。

答案 16 :(得分:-1)

我使用我的64位PC下载了devkit 32位,但我发现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"' 

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