activemdb が動作しない

linux からでも Microsoftmdb (Access) を操作できるライブラリ(検索に限る)。これを動かすには mdbtools が必要。最初はソースを持ってきて make したもののエラーがでるので困ってたが

sudo apt-get install mdbtools

で OK だった。続けて gem からインストール

sudo gem install activemdb

例えば test.mdb というファイル名で Users テーブルを用意する。

id name description
1 basyura main user
2 spider-man sub user

検索するソースを用意する。

require 'rubygems'
require 'active_mdb'

class User < ActiveMDB::Base
  set_mdb_file 'test.mdb'
  set_table_name 'Users'
end

user = User.find_first :id => 1
puts user.name
puts user.description

いやぁ、簡単だねー♪と思ったらここからレコードが取れない謎のハマリ。いろいろ試してみて分かったのは、where 句指定があると mdbtools が取ってきてくれないこと。インタラクティブモードで検証してみた。

$ mdb-sql -Fp -d :: test.mdb
1 => select * from Users
2 => go

name::description::id
basyura::main user::1
spider-man::sub user::2

登録してある 2 レコードが取れる。

1 => select * from Users where id = 1
2 => go

name::description::id

取れない orz
mdb を直接開いて同じ sql を投げたら OK なので mdbtools 側の問題だと思うんだけど、、、または office 2003 がサポート外とか?