2010-01-20 62 views
0

我试图将我的Ruby on Rails应用程序连接到Microsoft SQL Server 2008中的遗留数据库。我浏览了不同的教程,页面,帮助页面和问题页面,仍然无法使其工作。连接到SQL Server(从Ubuntu):[RubyODBC]无法分配SQLHENV

我使用:

  • Ubuntu的业力
  • 的Rails 2.3.5
  • 的Ruby 1.8.7
  • 的ActiveRecord-ODBC适配器2.0
  • 的ActiveRecord - SQLSERVER适配器2.3
  • dbd-odbc 0.2.5
  • dbi 0.4.3

我也已经安装:

  • freetds的0.82-6
  • tdsodbc 0.82-6
  • SQSH 2.1-8build1
  • libodbc-ruby1.8的0.9997-2(也试图与0.9995 0.9998和)
  • 的unixODBC 2.2.11-16ubuntu1

我设法ŧ用tsql,sqsh和isql连接到数据库。但不能通过irb或通过导轨连接。每当我尝试,我得到以下错误:

DBI::DatabaseError: **INTERN (0) [RubyODBC]Cannot allocate SQLHENV** 
from /var/lib/gems/1.8/gems/dbd-odbc-0.2.5/lib/dbd/odbc/driver.rb:36:in `connect' 
from /usr/lib/ruby/1.8/dbi/handles/driver.rb:33:in `connect' 
from /usr/lib/ruby/1.8/dbi.rb:142:in `connect' 
from (irb):4 

这并不重要,如果我使用ODBC适配器或SQL适配器,因为它总是在DBI驱动程序失败。任何想法可能是错误的?

我有正确定义的odbc.ini,odbcinst.ini和freetds.conf文件。他们正在使用所有其他命令来连接(isql,tsql,sqsh)。

请帮我或指点我的地方,可能会帮助我! =)

PS:我已经按照没有太大的成功,下面的页面(其中包括):

  • wiki.rubyonrails.org/database-support/ms-sql?s[]=sql & s [] = server
  • piao-tech.blogspot.com/2008/02/using-activerecord-with-microsoft-sql.html
  • lambie.org/2008/02/28/connecting-to-an- mssql-database-from-ruby-on-ubuntu/
  • stackoverflow.com/questions/1419397/rubyodbc-cannot-allocate-sqlhenv

回答

0

如果您可以切换到JRuby(jruby.org),您可以尝试在MS SQL Server JDBC驱动程序中使用active-record-jdbc gem。我使用它们连接到来自Ruby的MS SQL Server 2005数据库,它的作用就像一个魅力。

希望它有帮助!

+0

谢谢,但不幸的是,在这种情况下这不是一个选项。 =( – simaob 2010-01-21 09:41:48

1

This page似乎表明该问题可能与无法找到共享库相关。您应该确保系统可以通过检查ldconfig -v的输出并确保包含libodbc,libodbcinst和libtdsodbc的文件夹包含在库搜索路径中来找到它可能需要的任何库。如果你不知道如何做到这一点,那么this link可能会有所帮助。

如果失败则建立创业板手动使用以下行

ruby extconf.rb --with-odbc-dir=/folder/to/unixodbc --disable-dlopen 

我也不敢保证,这是正确的答案,但它可以帮助。我确实有Freetds和SQL Server在CentOS上非常高兴地使用rails。

+0

嗨,谢谢你的回答,我尝试了你提出的第一个选项,但它不起作用,我可能做错了什么,因为在执行ldconfig之后,条目似乎没有更新。我已经用Ubuntu Jaunty Jackalope创建了一个新的虚拟机,并且一切正常,我可以连接到MSSQL服务器!= D – simaob 2010-01-21 12:32:41

+0

好吧,我很高兴它现在正在工作,即使这没有帮助。 – 2010-01-21 13:00:50