ProblèmeUtilisation de 12.5.4 avec les pilotes de JTDS avec JRuby
Je suis en train de construire un petit script Ruby - qui sera exécuté à l'aide JRuby une fois par jour - pour se connecter à un Sybase ASE 12.5.4 base de données et effectuer une requête complexe. En fin de compte, j'ai l'intention de faire un peu de traitement sur les données et d'insérer les nouvelles données dans une table MySQL pour une utilisation dans une application de rails.
Environnement
- JRuby v1.4.0
- java v1.6.0_15
- sur Ubuntu Karmic
JRuby Gems installés
- activerecord-jdbc-adaptateur (0.9.1)
- activerecord-2.3.4
jruby Lib Directory
- jtds-1.2.5
Query
SET rowcount 10
SELECT * FROM TEST_TABLE
Code Snippet
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 --)
je peux le confirmer se connecte au DB. Bien que j'ai des problèmes en sélectionnant simplement 10 lignes d'une table de base de données.
Produit
Pour exécuter la méthode:
/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
Pour select_rows méthode:
/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
Les états d'erreur que je ne devrais pas retourner un jeu de résultats mais il n'a pas d'importance quelle méthode J'utilise, exécute, select_rows etc rien ne fonctionne.
Encore une chose concernant les requêtes. Ma requête d'origine est plutôt complexe, je décale les variables, supprime les tables temporaires et crée des tables temporaires, les remplit et les sélectionne. En utilisant Squirrel SQL, je peux exécuter une fois et obtenir un résultat. En utilisant DBI, j'ai été incapable de le faire en une seule exécution, est-ce que quelqu'un sait si je peux simplement exécuter le tout une fois ou dois-je le séparer?
Quelqu'un pourrait-il m'aider s'il vous plaît? Est-ce que j'utilise jTDS correctement? Merci beaucoup d'avance.
Est-ce que la partie 'SET rowcount 10' de la requête que vous essayez d'exécuter? –