代码之家  ›  专栏  ›  技术社区  ›  rip747

rubyodc无法分配sqlhenv

  •  5
  • rip747  · 技术社区  · 15 年前

    我正在尝试使用Ruby连接到Ubuntu9.04上的SQL Server。我翻译并遵循了让OSX从此处与SQL Server对话中概述的所有步骤:

    http://toolmantim.com/articles/getting_rails_talking_to_sqlserver_on_osx_via_odbc

    一切都在Freetds和Unixodc端工作。我可以使用TSQL查看和查询数据库。

    当我尝试使用IRB从Ruby访问数据库时,我得到以下错误:

    DBI::数据库错误:实习生(0)[rubyodc]无法分配sqlhenv

    有人碰到过这个问题吗?我该怎么解决?

    7 回复  |  直到 14 年前
        1
  •  5
  •   Tim Morgan    15 年前

    当我升级到Ubuntu9.10(KarmicKoala)时,我开始出现这个错误。关于Ubuntu软件包安装顺序的提示对我来说不起作用。

    修复方法似乎是手动编译RubyODBC。

    wget http://www.ch-werner.de/rubyodbc/ruby-odbc-0.9997.tar.gz
    tar xzvf ruby-odbc-0.9997.tar.gz
    cd ruby-odbc-0.9997
    ruby extconf.rb --with-dlopen
    make
    sudo make install
    
        2
  •  2
  •   JBK    15 年前

    系统

    Ubuntu 9.10 64位

    我必须在rubyodc安装中指定odbc目录

    wget http://www.ch-werner.de/rubyodbc/ruby-odbc-0.9997.tar.gz
    tar xzvf ruby-odbc-0.9997.tar.gz
    cd ruby-odbc-0.9997
    ruby extconf.rb --with-odbc-dir=/usr/lib/odbc --disable-dlopen
    make
    sudo make install
    
        3
  •  1
  •   Mark Magnus    14 年前

    我也有同样的问题。

    但在Centos 5.5上不是Ubuntu

    尝试了很多论坛/解决方案,但没有乐趣。

    错误消息提示缺少对unixodc的引用。 使用ld_library_path变量进行设置。 通过创建
    /等/ld.so.conf.d/odbc.conf. 将unixodc位置添加到文件ie/usr/local/lib。 运行,sudo ldconfig。

        4
  •  0
  •   rip747    15 年前

    想想看,我在提交我的问题后,真的得到了这项工作。我最终做的是卸载libdbd odbc ruby和libdbi ruby,然后通过先安装libdbi ruby,然后安装libdbd odbc ruby重新安装它们。我想当我以前安装它们的时候,一定是出了点问题。

        5
  •  0
  •   Leslie Viljoen    15 年前

    btw,按照在Ubuntu9.10(karmic)上重新编译RubyODBC的说明,需要安装libiodbc2 dev或unixodc dev包。当使用libiodbc2 dev时,当我的ruby程序尝试以下操作时,会出现分段错误:

    connection.select_all('select top 15 * from log_device_healths')
    

    …但使用unixodc dev时没有问题。

        6
  •  0
  •   Matt Zukowski    15 年前

    蒂姆摩根的解决方案对我不起作用。但是,通过安装旧版本的libodbc ruby(0.9995),我可以从这里开始工作:

    http://mirrors.kernel.org/ubuntu/pool/universe/libo/libodbc-ruby/libodbc-ruby1.8_0.9995-1_i386.deb

    更多详情可从Carsten Gehling的博客中获得:

    http://gehling.dk/2010/02/the-woes-of-libodbc-ruby1-8-and-debian-ubuntu/

    不过要小心--Ubuntu的更新管理器会很高兴地将这个版本的libodbc ruby“升级”到损坏的0.9997-2。我不小心以这种方式重写了旧版本,结果却回到了这里,试图弄清楚上次我是如何修复它的。

        7
  •  0
  •   Tim Morgan    15 年前

    好吧,我的另一个答案似乎不再适用于我了。 This thread 帮助我以另一种方式解决这个问题,我想在这里分享它。

    sudo gem uninstall ruby-odbc
    sudo rm /usr/local/lib/site_ruby/1.8/x86_64-linux/odbc.so
    cd /tmp
    wget http://mirrors.kernel.org/ubuntu/pool/universe/libo/libodbc-ruby/libodbc-ruby1.8_0.9995-1_amd64.deb
    sudo dpkg -i libodbc-ruby1.8_0.9995-1_amd64.deb
    

    如果您不在64位平台上,则需要下载另一个Debian包。

    基本上,解决这个问题的方法是安装0.9995版的RubyODBCUbuntu包。