Ruby SQL连接问题

时间:2014-04-16 15:57:44

标签: sql ruby-on-rails ruby sql-server

我正在尝试编写一个独立的脚本,这样我就可以运行一个常规的cron作业来更新数据库,并将一些数据缓存到本地文件中,这样我们就不必等待查询时间了。这样做,我正在使用ActiveRecord。我有以下代码:

require "active_record"
require "rubygems"
require "./lib/queries/my_query_file"

def my_method

    #get stored query string in my_query_file
    sql = MY_QUERY

    @sql_con = ActiveRecord::Base.establish_connection(
       :adapter => "sqlserver",
       :host => "my_host",
       :port => "my_port",
       :username => "my_user",
       :password => "my_pass",
       :database => "my_db",
       :timeout => "100000"
    )

    @@query_result = @sql_con.connection.select_all(sql)

    @@query_result.each do |row|
        #do something
    end
end

当我尝试运行上面的脚本时,我收到以下错误:

  

为数据库适配器指定'sqlserver',但未加载gem。将gem ''添加到您的Gemfile中。 (GEM :: LoadError)

对这个问题有什么看法?我已经用尽了我的搜索选项,以至于我在寻找答案时感到头疼。我终于屈服于发布一个问题,看看是否有任何专家提供帮助,或者在此之前遇到此问题的人可能会回想起解决方案。

2 个答案:

答案 0 :(得分:1)

您正在使用:adapter => " sqlserver",这使得ruby假设sqlserver是您尝试使用的数据库。它试图查找具有sqlserver适配器连接的ruby gem。

当我们使用mysql gem时,我们可以看到用C编写的库扩展可以帮助我们通过端口连接到当前的mysql服务器。

答案 1 :(得分:0)

这有点蹩脚。我尝试了user944938的建议,并且有效。我只是希望我可以使用ActiveRecord,因为这是我在其他地方使用的。我现在更新了我的代码:

要求" tiny_tds" 要求" ./ lib / queries / my_query_file"

def my_method

    sql = MY_QUERY

    client = TinyTds::Client.new(
       :username => "my_user", 
       :password => "my_pass", 
       :host => "my_host", 
       :database => "my_db"
    )

    @@build_query = client.execute(sql)

    @@build_query.each do |row|
       #do something
    end

end