Ruby 通过DBI 访问 MySQL 问题

Ruby 通过DBI 访问 MySQL 问题

操作系统是 Windows 2003/SP1, 安装了php?name=php?name=Ruby" onclick="tagshow(event)" class="t_tag">Ruby" onclick="tagshow(event)" class="t_tag">php?name=Ruby" onclick="tagshow(event)" class="t_tag">Ruby 1.8.6, 数据库是MySQL 5.0. 为了通过php?name=php?name=Ruby" onclick="tagshow(event)" class="t_tag">Ruby" onclick="tagshow(event)" class="t_tag">php?name=Ruby" onclick="tagshow(event)" class="t_tag">Ruby 访问MySQL, 我下载了dbd-mysql-0.4.2.zip ( http://rubyforge.org/projects/ruby-dbi/)。

1. 首先安装DBI (解压后按以下步骤进行,目录略)

Ruby setup.rb config
Ruby setup.rb setup
Ruby setup.rb install

以上操作没有出错(好像就是些文件拷贝)

2. 然后开始验证

A. 先看看DBI 中有没有MySQL

require "dbi"

DBI.available_drivers each do |driver|
puts "#{driver}"
end

运行(在fxri 下运行)后 返回以下结果

dbiroxy:
dbi:ODBC:
dbi:Mysql:
dbi:statement:
dbi:Mysql:
dbi:driver:
dbi:database:
=> ["dbiroxy:", "dbi:ODBC:", "dbi:Mysql:", "dbi:statement:", "dbi:Mysql:", "dbi:driver:","dbi:database:"]

B. 尝试操作数据库

我先在MySQL 建了个数据库test (Create Database test;), 用户名为root,没有设密码(仅测试用)

然后运行(fxri 环境下)以下代码尝试连接数据库

require 'dbi'

dbh=DBI.connect('DBI:Mysql:test','root','')

结果出错, 返回以下信息:

DBI::InterfaceError: Could not load driver (no such file to load -- mysql)
from c:/ruby/lib/ruby/site_ruby/1.8/dbi.rb:368:in `load_driver'
from c:/ruby/lib/ruby/site_ruby/1.8/dbi.rb:233:in `_get_full_driver'
from c:/ruby/lib/ruby/site_ruby/1.8/dbi.rb:219:in `connect'
from (irb):21
from c:/ruby/lib/ruby/site_ruby/1.8/dbi.rb:519

请各位先行者 看看这是什么问题? 指点一下, 这里万分感谢了.

PS:
 在新手区发帖问了,快1下午了,没人回帖, 只好在这儿再发一编, 希望高手不吝指教。万分感谢。

PS:

 在请您接招板块发帖后,也没有人搭理, 又在这儿发帖问下各位大虾,希望没有破坏版规。 这里版主比较多,希望能有人指点,讨论也行阿
可以的..
gem install dbd-mysql
然后再试试吧


[Copy to clipboard] [ - ]
谢谢karon_flame. 我下载的是dbd-mysql-0.4.2.zip。所以不是用Gem 安装的。

刚才又重新下载了dbd-mysql-0.4.2.gem. 通过下面命令安装:

  gem install dbd-mysql-0.4.2.gem

返回错误:

 ERROR: While executing gem ... (RuntimeError)
  Error instaling dbd-mysql-0.4.2.gem:
   dbd-mysql requires dbi >= 0.4.0

我又去下载了 dbi-0.4.1.gem,然后通过下面命令行运行:

  gem install dbi-0.4.1.gem

又出了错误提示:

ERROR: While executing gem ... (RuntimeError)
  Error instaling dbi-0.4.1.gem:
   dbi requires deprecated >= 2.0.0

请指教,谢谢

[ 本帖最后由 8dianle 于 2008-12-26 14:44 编辑 ]
这样..
gem install dbi
然后
gem install dbd_mysqlxxoo


这样安装是因为gem安装的dbd_mysql需要gem安装的dbi支持,不用把gem包下载下来,直接网络安装,依赖关系让gem来自动解决
但是用gem安装的dbi,无法使用available_drivers

这个是个bug ,详细的内容看dbi.rb

ps :gem 安装完之后,dbi目录下会有一个test脚本..
先运行下,如果只有available_drivers方法错误的话,那么就是已经成功安装了

[ 本帖最后由 karon_flame 于 2008-12-26 14:53 编辑 ]