I have followed the cookbook on http://wiki.rubyonrails.org/database-support/ms-sql
but am having problems with the rails part. I can connect to the
database using sqsh so I think all the freetds plumbing is good. When
I try to connect to the db with a rake db:migrate or just using script/
console I get this error:
Client.find(:first)
DBI::InterfaceError: Unable to load driver 'ODBC'
from /usr/lib/ruby/gems/1.8/gems/dbi-0.4.0/lib/dbi.rb:286:in
`load_driver'
from /usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
from /usr/lib/ruby/gems/1.8/gems/dbi-0.4.0/lib/dbi.rb:236:in
`load_driver'
from /usr/lib/ruby/gems/1.8/gems/dbi-0.4.0/lib/dbi.rb:154:in
`_get_full_driver'
from /usr/lib/ruby/gems/1.8/gems/dbi-0.4.0/lib/dbi.rb:139:in
`connect'
from /usr/lib/ruby/gems/1.8/gems/activerecord-sqlserver-
adapter-1.0.0.9250/lib/active_record/connection_adapters/
sqlserver_adapter.rb:47:in `sqlserver_connection'
from /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/
connection_adapters/abstract/connection_pool.rb:223:in `send'
from /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/
connection_adapters/abstract/connection_pool.rb:223:in
`new_connection'
So I looked into dbi.rb and I see where it throws the exception. It
can't seem to get the Driver called ODBC. I do have dbd-odbc-0.2.4
installed. Seems like the dbi part is not connecting to the odbc
part.
Thank you for reponding. I tried that. I get the same error from a
different stack. It finds the new sqlserver.rb from the gem you
suggested. But it still barfs in DBI because it can't find the ODBC
driver. I wonder if it's some kind of path thing for finding the dbd-
odbc thing. It's beyond my rails capabilities to figure out how the
gems find each other. I'm sure it's some lame thing (it always is!).
Any other advice would be greatly appreciated.
Mike
subscriber = Subscriber.find(1)
DBI::InterfaceError: Unable to load driver 'ODBC'
from /usr/lib/ruby/gems/1.8/gems/dbi-0.4.0/lib/dbi.rb:286:in
`load_driver'
from /usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
from /usr/lib/ruby/gems/1.8/gems/dbi-0.4.0/lib/dbi.rb:236:in
`load_driver'
from /usr/lib/ruby/gems/1.8/gems/dbi-0.4.0/lib/dbi.rb:154:in
`_get_full_driver'
from /usr/lib/ruby/gems/1.8/gems/dbi-0.4.0/lib/dbi.rb:139:in
`connect'
from /home/mvargo/.gem/ruby/1.8/gems/rails-sqlserver-2000-2005-
adapter-2.2.15/lib/active_record/connection_adapters/
sqlserver_adapter.rb:26:in `sqlserver_connection'
Mike, in my experience this has been painful. Here's a few things to
look for:
First, make sure that TDS is set up fine. Verify it with this command:
tsql -S server -U user -P password
Make sure you have ruby-odbc to have ruby load the ODBC driver (think
this could potentially solve your issue). My instructions on a fedora
box are:
RubyODBC:
wget http://ch-werner.de/rubyodbc/ruby-odbc-0.9996.tar.gz
tar -xvzpf ruby-odbc-0.9996.tar.gz
cd ruby-odbc-0.9996
ruby extconf.rb
make
sudo make install
Test it out again. If you have a problem with the data source, a way
to test it directly is:
I can get freetds and iodbc to connect successfully but ruby-odbc just
doesn't seem to support a shared (non-root access) linux installation
like everything else.
I'm blocked as make install tries to put the files in the standard
locations and to make this work I need to use a --prefix= type
install. Looking through the makefile, I just didn't seem to see any
support for this.
Rob
P.S. Sorry for the slight hijack - but as long as you have root access
this looks to be pretty reliable to install and get working.
Did you have any luck with this? Whats described by Harold seems to
match everyone elses experience.
By any chance would you be on a server for which you don't have root
access? I have no troubles with freetds and iodbc getting to the SQL
Server that I'm intending to use, but I cannot get either ruby-odbc or
rails-sqlserver2000-2005-adapter to install at all on a shared linux
host.