0

我在我的 Windows 机器上安装 mysql2 gem 时遇到问题,通常它可以工作,但现在我用Failed to build native extension.谷歌搜索,但有很多 linux 修复。我知道使用 ruby​​ 在 Windows 上工作并不是最好的选择。回到问题上来,我gem install mysql2 -- --with-mysql-dir=C:\wamp\bin\mysql\mysql5.6.12\bin --with-mysql-lib=C:\wamp\bin\mysql\mysql5.6.12\lib之前是安装mysql2的,它是和mysql一起工作的,但是rails需要mysql2。

谢谢你。

4

3 回答 3

0

mysql2 可能很难安装。我们刚刚得到了一个使用 Ruby 2.0.0p247、Windows 64bit 和 mysql 0.3.13 的开发盒。以下是一些建议:

  1. 确保您安装了最新的 DevKit ( http://rubyinstaller.org/downloads/ )。在页面的右栏中,它告诉您特定版本的 Ruby 需要哪个版本的 DevKit。我们发现将它安装到 C:\DevKit 是最简单的

  2. 现在尝试运行gem install mysql2 .. 您在问题中列出的命令。或者,对于 32 位安装,我们执行以下操作:

subst X: "C:\Program Files (x86)\MySQL\MySQL Server 5.6"
gem install mysql2 -v=0.3.13 --platform=ruby -- --with-mysql-include=X:\include --with-mysql-lib=X:\lib
替代 X:/d

subst命令创建一个虚拟驱动器并帮助处理路径名中的空格。

  1. 将 C:\Program Files (x86)\MySQL\MySQL Server 5.6\lib\libmysql.dll 复制到您的 Ruby bin 目录。如果您使用 32 位,您应该关闭并运行。

然而,64 位用户在构建 mysql2 后可能会遇到另一个错误。上面的步骤似乎可以工作,但是当他们实际使用 mysql2 gem 做一些有用的事情时,比如运行rake db:create,他们会遇到分段错误。可以在https://github.com/brianmario/mysql2/issues/372https://bugs.ruby-lang.org/issues/8591https://groups 找到更多信息和问题修复。 google.com/forum/#!topic/rubyinstaller/uTNffOt6Yqo

长话短说,需要使用兼容的 mysql 连接器 c 而不是 MySQL 服务器目录。一位乐于助人的用户提供了正确的连接器 c,可以在此处下载 ( https://www.copy.com/s/CHZ4eT4us6f1/mysql-connector-c-noinstall-6.0.2-winx64.zip )。解压缩该 zip 文件,然后将gem install mysql2 ... 命令指向适当的目录,然后 64 位幸福就会随之而来。(不要忘记从下载的连接器 c 文件夹中获取 libmysql.dll 并将其放在您的 ruby​​ bin 目录中)。

于 2013-08-07T13:04:43.697 回答
0

从此处下载连接器的 32 位 Zip 存档。然后将提取的文件夹复制到 C 驱动器的根目录以便于访问,以便您的连接器文件夹路径将是这样的

C:\mysql-connector-c-6.1.3-win32\

现在将这行代码复制到您的 cmd 并执行(记得用您的连接器版本号更改)

gem install mysql2 --platform=ruby -- '--with-mysql-dir="C:/mysql-connector-c-6.1.3-win32/"'

经过长时间的尝试,我以这种方式成功地在我的 32 位和 64 位 Windows 7 中安装了 mysql2 gem。干杯!

于 2014-01-11T03:12:33.307 回答
0

在命令提示符下执行此命令。

gem install mysql2 -- '--with-mysql-lib="c:\Program Files\MySQL\MySQL Server 5.1\lib\opt" --with-mysql-include="c:\Program Files\MySQL\MySQL Server 5.1\包括"'

注意:根据您的安装更改Mysql安装目录。
那应该可以完美地工作

于 2013-08-20T10:30:31.927 回答