Windows 7 x64中Rails的MySQL驱动程序

时间:2009-10-12 22:22:07

标签: mysql ruby-on-rails windows-7

我在新安装的Windows 7计算机上连接MySQL数据库时遇到问题。 我尝试迁移数据库时收到此错误。

!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install 
the mysql gem and try again: gem install mysql.
rake aborted!
193: %1 is not valid Win32 application - C:/Ruby/lib/ruby/gems/1.8/gems/mysql-2.8.1-x86-mswin32/lib/1.8/mysql_api.so

我目前已安装

ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]
mysql version 5.0.86  for Win64
gem 1.3.1
mysql-2.8.1-x86-mswin32

10 个答案:

答案 0 :(得分:51)

我的同事在Windows 7上运行rails时遇到了类似的问题。 他必须用InstantRails中的一个替换libmySQL.dll(在PATH中)。

答案 1 :(得分:4)

我花了小时试图让MySQL和Rails在Windows上运行得很好(尽管是XP,32位和64位版本)。我终于放弃了,因为我的生产盒运行Linux(Rails和MySQL非常好地运行)并且只使用SQLite 3进行开发。没有令它头疼的工作,并且它的运行速度足以用于开发目的。

但是,我确实听说有些人幸运地将gem提供的DLL之一替换为官方MySQL发行版提供的DLL。此外,有些人根本没有这个DLL导致问题。最后,它对我不起作用,但希望你会有更多的运气。

答案 2 :(得分:2)

对于Rails或DataMapper或与MySQL交谈的任何内容,您需要在Rails \ bin中使用32位驱动程序。该驱动程序称为libmysql.dll。即使您有64位服务器,也需要32位驱动程序。

64位驱动程序将失败将ruby / gems / 1.8 / gems / do_mysql-0.10.2-x86-mingw32 / lib / do_mysql / 1.8 / do_mysql.so:193:%1不是有效的Win32应用程序。< / p>

错误的32位版本会因内存分配错误或类似奇怪的东西而崩溃(从另一个项目中获取libmysql.dll的建议解决方案可能不适用于较新版本的MySQL)。

答案 3 :(得分:1)

我是这个轨道的新手。我刚刚在vista中传递了同样的问题。在使用InstantRails中的libmySQL.dll(在PATH中)下载后,它开始工作。

sukumaaar@gmail.com

答案 4 :(得分:1)

解决这个问题的方法是简单地安装32位版本的mysql。

答案 5 :(得分:1)

快进到2012年3月。我通过重命名我的Ruby \ b \ bin \ libmysql.dll,然后从C:\ Program Files(x86)\ MySQL \ MySQL Connector复制libmysql.dll,在Windows 7 x64上解决了这个问题C 6.0.2 \ lib \ opt to Ruby \ bin

在C:\ Program Files(x86)\ MySQL \ MySQL Workbench CE 5.2.37上有一个较新版本的libmysql.dll,但gem不喜欢非6.x版本。

答案 6 :(得分:0)

这可能与Ruby on Rails Win7 x64?有关吗?如果是这样,再次修复了什么(无法​​从第一个答案中找到答案)?

答案 7 :(得分:0)

另一个对我有用的选择是下载32位版本的mysql for windows并保留libmysql.dll并将此DLL的位置添加到windows PATH。

答案 8 :(得分:0)

将InstantRails中的libmySQL.dll添加到我路径中的目录也为我工作。我们必须做这种事情真的很难过。我想看看gem或MySql本身正确安装这个DLL。

答案 9 :(得分:0)

我在WinXP SP3上运行当前版本的所有版本:Ruby 1.9.2p0,MySQL 5.5,mysql 2.8.1。这个问题仍然存在,为了解决这个问题,我必须将Instant Rails libmysql.dll复制到我的C:\ Ruby192 \ bin目录中。我最初复制了MySQL 5.5附带的libmysql.dll文件但导致了seq错误!