TinyTDS未定义的符号dbsetuser



过去几天我一直在为这个问题而挣扎,我没有主意了。我正在开发一个有点过时的应用程序,现在我需要在其中添加对SQL Server的支持。我已经设法让它在本地工作(Ubuntu 12.04),但当我试图在Ubuntu 8.04实例的Rackspace上复制它时,遇到了以下错误:

irb > require 'rubygems'
irb > require 'tiny_tds'
irb > TinyTds::Client.new(:host => 'X.X.X.X', :user name => 'xxx', :password => 'xxx')
irb: symbol lookup error: /opt/ruby-enterprise-1.8.7-2012.02/lib/ruby/gems/1.8/gems/tiny_tds-0.6.0.rc1/lib/tiny_tds/tiny_tds.so: undefined symbol: dbsetluser

我运行的堆栈是:

  • Ubuntu 8.04
  • 2002年第1.8.7-212.02号树
  • FreeTDS 0.92.377(来源编译)
  • TinyTDS 0.6.0.rc1(也尝试过0.5.1)

我可以使用isql成功地连接到SQL Server,这让我认为FreeTDS和ODBC设置正确。但每当我尝试从Ruby与TinyTds连接时,我都会收到上面的错误。

我已经试着在谷歌小组上发布rails sqlserver适配器,但论坛似乎有人主持,我的问题还没有出现。

我很确定这与TinyTds找不到库有关(我认为应该在某个地方找到),但我不知道如何实现这一点。

作为最后的手段,我将从12.04开始从头开始构建服务器,但我更希望现有系统能够正常工作。

更新

根据@Casper的建议,我已经尝试连接odbc,现在我得到了一个不同的错误

irb > require ‘odbc’
irb > ODBC.connect('dsn', 'username', 'password')
[unixODBC][FreeTDS][SQL Server]Unable to connect to data source`

即使我可以成功地连接isql和sqsh。

感谢

这一切都与环境变量有关。在安装了freetds和odbc之后,Ruby似乎无法使用FREETDSCONFODBCINIODBCSYSINI的环境变量。我必须将它们添加到用户的.bashrc/etc/profile以及Apache配置中,以便让Passenger看到它们(使用SetEnv)。

希望这对将来的人有所帮助。

相关内容

  • 没有找到相关文章

最新更新