安装ruby下的mysql2_在64位Windows+ruby2.0下安装MySQL2

在64位Windows Server 2008上,作者在Ruby 2.0环境中安装mysql2 gem时遇到LoadError和SegmentFault错误。通过卸载并重新安装mysql2,结合gendef.exe和dlltool生成新的libmysql.lib,然后将新库拷贝到Ruby的bin目录,最终成功解决了问题。
摘要由CSDN通过智能技术生成

Ruby on rails初体验系列文章:

1. 环境

Windows server 2008 64bit

MySQL server 5.6

Ruby 2.0 64bit

DevKit

2. 第一次安装

开始按照网上教程,安装了mysql2

gem install mysql2 — ‘–with-mysql-lib=”C:\Program Files\MySQL\MySQL Server 5.6\lib” –with-mysql-include=”C:\Program Files\MySQL\MySQL Server 5.6\include”‘

安装过程很顺利,暗自庆幸。。。

第一次运行,出LoadError:

C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require

‘: 126: 找不到指定的模块。 – C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/mysql2-0.

3.13/lib/mysql2/mysql2.so (LoadError)

from C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:4

5:in `require’

from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/mysql2-0.3.13/lib/mysql2.rb

:8:in `’

from C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:1

10:in `require’

from C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:1

10:in `rescue in require’

from C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:3

5:in `require’

from download.rb:6:in `’

到Mysql的安装目录,把libmysql.dll和libmysql.lib都拷贝到了Ruby的bin目录下,再运行(程序里用到了ActiveRecord),这次出了SegmentFault错误。。。。

3. 第二次安装

网上查了查,应该是这个问题导致的。按照这篇文章的内容,依次如下处理。

另外,出现segment fault的根本原因应该是默认的libmysql.lib和mingw64-gcc不兼容导致的。

3.1. 卸载刚装的Mysql2

> gem uninstall mysql2

Successfully uninstalled mysql2-0.3.13

3.2. 下载需要的工具

下载后从下面的文件夹找到这个文件,拷贝到devkit/mingw/bin下,我之所以考到这里,是因为dlltool.exe也在这里,都放到path里方便。

然后运行:

gendef.exe libmysql.dll

这条命令会生成libmysql.def文件。

生成这个libmysql.def文件之后,就可以生成新的lib了。

dlltool -v –dllname libmysql.dll –def libmysql.def –output-lib libmysql.lib

3.3. 再次安装mysql2

gem install mysql2 — ‘–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. 拷贝生成的libmysql.lib到ruby/bin文件夹

再次运行程序,OK。0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值