0

在过去的几天里,我一直在为这个问题而苦苦挣扎,但我没有想法。我正在开发一个有些过时的应用程序,现在我需要在其中添加对 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
  • 稀土 1.8.7-2012.02
  • FreeTDS 0.92.377(从源代码编译)
  • TinyTDS 0.6.0.rc1(也试过 0.5.1)

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

我曾尝试在 Google 群组中发布 rails-sqlserver-adapter 的帖子,但论坛似乎已被审核,我的问题尚未出现。

我相当肯定这与 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。

谢谢

4

1 回答 1

0

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

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

于 2014-04-17T21:22:32.780 回答