問題使用Sybase ASE 12.5.4與JTDS驅動程序使用JRuby
我試圖建立一個小型的Ruby腳本 - 將使用JRuby每天一次運行 - 連接到的Sybase ASE 12.5.4數據庫並執行一個複雜的查詢。
最終,我打算對數據做一些處理,並將新數據插入到MySQL表中以便在Rails應用程序中使用。
環境
- 的jruby V1.4.0
- 的java v1.6.0_15
- 在Ubuntu業報
JRuby的安裝寶石
- 的ActiveRecord-JDBC適配器(0.9.1)
- 的ActiveRecord-2.3.4
JRuby的lib目錄
- JTDS-1.2.5
查詢
SET rowcount 10
SELECT * FROM TEST_TABLE
代碼段
require 'java'
require 'jtds-1.2.5.jar'
require 'rubygems'
require 'active_record'
config = {
:username => 'railstest',
:password => 'railstest',
:adapter => 'jdbc',
:dialect => 'sybase',
:host => 'localhost',
:database => 'railstest',
:port => '5000',
:driver => 'net.sourceforge.jtds.jdbc.Driver',
:url => 'jdbc:jtds:sybase://localhost:5000/railstest'
}
ActiveRecord::Base.establish_connection(config).connection.execute(-- QUERY --)
我可以證實這一點連接到數據庫。儘管我只是從數據庫表中選擇了10行,但遇到了問題。
可生產
對於執行方法:
/usr/local/bin/jruby-1.4.0/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:219:in `log': ActiveRecord::ActiveRecordError: The executeUpdate method must not return a result set.: SET rowcount 10 SELECT * FROM TEST_TABLE (ActiveRecord::StatementInvalid)
from /usr/local/bin/jruby-1.4.0/lib/ruby/gems/1.8/gems/activerecord-jdbc-adapter-0.9.2/lib/active_record/connection_adapters/jdbc_adapter.rb:559:in `execute'
from db-test.rb:21
對於select_rows方法:
/usr/local/bin/jruby-1.4.0/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:219:in `log': ActiveRecord::ActiveRecordError: The executeUpdate method must not return a result set.: SET rowcount 10 SELECT * FROM TEST_TABLE (ActiveRecord::StatementInvalid)
from /usr/local/bin/jruby-1.4.0/lib/ruby/gems/1.8/gems/activerecord-jdbc-adapter-0.9.2/lib/active_record/connection_adapters/jdbc_adapter.rb:559:in `execute'
from /usr/local/bin/jruby-1.4.0/lib/ruby/gems/1.8/gems/activerecord-jdbc-adapter-0.9.2/lib/active_record/connection_adapters/jdbc_adapter.rb:629:in `select'
from /usr/local/bin/jruby-1.4.0/lib/ruby/gems/1.8/gems/activerecord-jdbc-adapter-0.9.2/lib/active_record/connection_adapters/jdbc_adapter.rb:550:in `select_rows'
from db-test.rb:21
的錯誤狀態,我不應該返回結果集,但它哪種方法無關緊要我使用,執行,select_rows等沒有任何作品。
關於查詢還有一件事。我原來的查詢是相當複雜的,我decalre變量,刪除臨時表和創建臨時表以及填充和選擇它們。使用Squirrel SQL,我可以執行一次並獲得結果。使用DBI我無法在一次執行中執行此操作,是否有人知道我是否可以只執行一次該操作,還是必須將其分開?
任何人都可以給我任何援助嗎?我是否正確使用jTDS? 非常感謝提前。
您嘗試執行的查詢中的「SET rowcount 10」部分是? – 2010-01-21 07:42:59