カテゴリー
開発・Web制作

Ruby で SQL Server を扱う(Windows)

Windows で Ruby Installer を使っている場合の手順です。Ruby のバージョンは 2.x 系を使っています。まずは gem で rdbi-driver-odbc を入れます。

カテゴリー
開発・Web制作

RDBI + SQL Server で NVARCHAR を SELECT するとエラーが発生する

Ruby から SQL Server を操作しようとすると、以下のエラーが出て何もできません。環境は Windows で、rdbi-driver-odbc を使用してデータベースにアクセスしようとしています。

C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/rdbi-driver-odbc-0.1.2/lib/rdbi/driver/odbc.rb:214:in `block in new_execution': undefined method `[]' for nil:NilClass (NoMethodError)
 from C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/rdbi-driver-odbc-0.1.2/lib/rdbi/driver/odbc.rb:211:in `collect'
 from C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/rdbi-driver-odbc-0.1.2/lib/rdbi/driver/odbc.rb:211:in `new_execution'
 from C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/rdbi0.9.1/lib/rdbi/statement.rb:163:in `execute'
 from C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/rdbi0.9.1/lib/rdbi/database.rb:189:in `execute'
 from C:/dbtest.rb:6:in `<main>' WARNING: #<ODBC::Statement:0x2d69000> was not dropped before garbage collection.

たしかに、Ruby から SQL Server を使うひとなんてまれなんでしょうが、この仕打ちはないんじゃないでしょうか・・・。しかしここで挫けるわけにはいかないので、解決策を調べてみました。