使用tiny_TDS连接到rails中的SQL-Azure:分段错误

我们试图让rails与Azure上的sqlserver数据库通信,我们使用openssl和libiconv安装freeTDS:

./configure --prefix=/usr/local --with-libiconv-prefix=DIR --with-openssl=DIR make make install 

然后我们将tiny_TDS和activerecord-sqlserver-adapter添加到gemfile中:

 gem 'tiny_tds' gem 'activerecord-sqlserver-adapter' $ bundle install 

配置数据库:

 development: adapter: sqlserver host: xxxxxxx.database.windows.net mode: DBLIB port: 1433 database: xxxxx username: xxxxxxxx password: x azure: true 

运行服务器:

 $ rails s 

一切都很好,直到这一点,但一旦你访问该网站ruby崩溃。

 steven@jenny:~/irr$ rails server -p 3001 => Booting WEBrick => Rails 3.0.4 application starting in development on http://0.0.0.0:3001 => Call with -d to detach => Ctrl-C to shutdown server [2012-07-24 15:37:00] INFO WEBrick 1.3.1 [2012-07-24 15:37:00] INFO ruby 1.9.2 (2012-02-14) [x86_64-linux] [2012-07-24 15:37:00] INFO WEBrick::HTTPServer#start: pid=7586 port=3001 /home/steven/.rvm/gems/ruby-1.9.2-p318/gems/tiny_tds-0.5.1/lib/tiny_tds/client.rb:68: [BUG] Segmentation fault ruby 1.9.2p318 (2012-02-14 revision 34678) [x86_64-linux] -- control frame ---------- c:0048 p:---- s:0232 b:0232 l:000231 d:000231 CFUNC :connect c:0047 p:0429 s:0228 b:0228 l:000227 d:000227 METHOD /home/steven/.rvm/gems/ruby-1.9.2-p318/gems/tiny_tds-0.5.1/lib/tiny_tds/client.rb:68 

我们尝试了几个版本的ruby:1.9.2-p318,1.9.2-p320,1.9.3-p125。 所有这些都有同样的错误。

这是在使用rvm和FreeTDS-0.9.1的ubuntu 11.10上。

有关解决方法的任何想法?

我在途中某处犯了错误吗?

编辑

IRB的输出:

 require 'tiny_tds' client = TinyTds::Client.new(:username =>'XXXXX@XXXXXXX.database.windows.net', :password => 'XXXXXXX', :host => 'XXXXXX.database.windows.net', :mode => 'DBLIB', :azure => 'true') SystemStackError: stack level too deep from /home/martinr/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/irb/workspace.rb:80 Maybe IRB bug!! 

这似乎是ruby本身的错误:

 /home/martinr/.rvm/gems/ruby-1.9.2-p320/gems/tiny_tds-0.5.1/lib/tiny_tds/client.rb:68: [BUG] Segmentation fault (core dumped) 

您应该只做一个简单的IRB提示,并在TinyTDS上提到这样的事情。

require 'tiny_tds' client = TinyTds::Client.new(...)

填写您的连接参数。 简单的东西,如用户名,密码和主机。 让我知道事情是怎么回事。

该错误似乎是由用户username@servername引起的

删除@severname部分后,ruby不再崩溃

Interesting Posts