在 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 放在 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
【问题讨论】:
如其所示,查看:结果记录到 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=编辑 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 查看lib
和include
目录的同一目录
【讨论】:
这也为我解决了这个问题。但我只是按照上述说明使用了存档。问题似乎是你所在的 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的主要内容,如果未能解决你的问题,请参考以下文章