ruby on rails 学习 (4):LoadErr : no such file to load -- mysql

      话说 ruby on rails 却是有其非同凡响的创新之处,有以下将会提及到的 ActionRecord 数据库与类的映射,记录与对象的映射等这种让我等小鱼鱼大开眼界的创新之举。

      因为之前做过一些简单的 php 应用,而做 php 应用首选的数据库便是 MySql, 所以在转到 rails 上时数据库还是倾向于使用 MySql。 Rails 之前的版本默认使用的数据库系统是 mysql , 但是因为 Sun 已经被 Oracle 收购, 不知是出于什么上的考虑, 在我的 rails version 3.0.5 上默认的数据库系统采用的是 sqlite3。  sqlite3 也是出色的开源软件,但个人 因为恋旧的原因还是选择采用 MySql 。

      在使用 MySql 作为默认数据库时, 只需在创建新的 application 时以 -d = mysql 的方式指明使用 MySql 数据库。 如果不想像我一样浪费大量时间到排查配置错误上,最好使用 gem update --system 命令升级各个 gem 包到最新版本。

      这里记录一下我的连接 MySql 时遇到得坑爹的问题,同时提醒各位同胞,由于 rails 快速的发展导致升级后新旧版本可能会有很大的不同,在做实验时确定你的 rails 版本和你使用的参考版本相符。我因为使用的资料与 rails 版本不相符而走了很大的弯路。这里再牢骚哈,国内的书,你是知道的...

    坑爹的问题:  no such file to load -- mysql

        这个问题最坑爹,我用了接近一整天的时间寻找解决之法。 一般的是说 MySql 数据库 bin 文件夹中的 libmysql.dll 要拷贝到你的 ruby/bin 文件夹中, 一部分人据说使用此方法解决了问题, 我的已然 no such file to load -- mysql。 如果不行可能是你的 libmysql.dll 版本过高而不能与你的 rails 兼容, 可以下载一个较低版本的进行替换, 如何得知那个版本会比较低? 一般而言文件小的版本就比较低。又一些人欢呼自己的问题得到了解决, 我的已然 no such file to load -- mysql。针对这个可以参考一下 这个 e 文引用:   

The errors which might come to you something like this:
no such file to load mysql
rake aborted: no such file to load mysql
The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql
Could not find RubyGem rake-compiler (~> 0.5)

To solve such problems follow these steps:
Step 1. Update rubygems to the latest version(like I upgraded it to 1.3.5).
Step 2: install rake-compiler(by gem install rake-compiler).
Step 3: if already installed hoe gem update it(gem update hoe) or install a fresh one.
Step 4: Download libMySQL.dll from here and copy it into C:/ruby/bin or wherever your ruby is installed, but make sure it should be in bin directory.
Step 5: Stop the mysql service, from Control Panel -> Administrative tools -> services -> mysql, and then restart it.

That’s it. You are done, after all these steps you can try
rake db:migrate
Suppose if that doesn’t work then after 4th step, stop the mysql service and restart your system.

     我的问题由上面的根本就得不到解决。难道我的人品这么差? 最后不得不从根本上考虑自己的代码形式了,这也正是此文所提及的 “以 rails 方式" 进行 rails 开发。最终发现了这样的问题:在进行开发时我使用的是 rails new fine 这样的方式生产 application ,而不是 rails new fine -d=mysql 这样的命令,然后 cd fine 后 rails generate controller login 产生了 login controller 这样的控制器,并且是手动的在生产出的 login_controller.rb 文件中调用 require 'mysql'。结果不行,再 require 'rubygems' require 'mysql' 已然 no such file to load -- mysql。明明在 irb 中 require 'mysql' => true 了....

     岂止是混账,简直就是混账。

     认输了...还是采用 rails fine -d=mysql 吧。 结果,我去,还是有问题,什么 mysql2()=0 问题,放狗查知,rails 3 采用 mysql2 方式进行 mysql 数据库连接。这可真是周瑜打黄盖,赔了夫人又折把米。 gem install mysql2 之,错误。 在放狗搜之,噩耗袭来,  mysql2 不支持 Windows。 我去。其不支持 Windows?再搜,果然黄天不负失身人,gem install mysql2 -v 0.2.6 --platform x86-mingw32 安装成功了!

挣扎到此时,已然很晚了,下次将实现一个登录程序。

PS: 先说好,要想成人精,不失几次身是不大可能的。

posted @ 2011-04-25 01:31  rereadyou  阅读(1261)  评论(0编辑  收藏  举报