今天,tiny_tds突然不接受多个execute
并返回:
C:\>ruby test_use.rb
one
two
C:/test_use.rb:15:in `execute': Attempt to initiate a new Adaptive Server operation with results pending (TinyTds::Error)
from C:/test_use.rb:15
代码只是三个USE
s:
require 'rubygems'
require 'yaml'
require 'fastercsv'
require 'tiny_tds'
require 'iconv'
CONFIG = YAML.load_file("config.yml")
client = TinyTds::Client.new(:username => CONFIG["db"]["username"], :password => CONFIG["db"]["password"],
:host => CONFIG["db"]["server"], :database => CONFIG["db"]["database"])
puts "one"
client.execute("USE DATAFEED")
puts "two"
client.execute("USE DATAFEED")
puts "three"
client.execute("USE DATAFEED")
有任何疑问是什么问题?我尝试重新启动Windows机器。
答案 0 :(得分:4)
这是我如何做的一个例子。
results = $regcenter_db.execute("select top 10 * from events")
event_ids = results.collect { |i| i["event_id"] }
results.do
答案 1 :(得分:1)
您必须使用do
:
Client.execute("...").do
答案 2 :(得分:0)
您必须致电do
或cancel
。如果您正在执行某些操作,例如获取部分结果,并且您对执行do
方法不感兴趣,则可以调用cancel
来中止查询。
答案 3 :(得分:0)
根据GitHub上的documentation for TinyTds:
重要的是要么从查询中返回数据,最有可能是使用#each方法,,要么在要求客户端执行另一个SQL批处理之前取消结果。如果不这样做会产生错误。
要取消查询,请使用cancel
方法:
client.execute("USE DATAFEED").cancel