Domanda

Sto lavorando sul porting di un'applicazione Rails per JRuby e HSQLDB. Il mio obiettivo è quello di incorporare un database e il sito all'interno di un singolo file JAR per la distribuzione presso i clienti. Ho il sito di lavoro abbastanza bene dal vaso, con alcuni problemi di rilievo.

Quando faccio la seguente con un modello di ActiveRecord abbastanza banale:

@total = SessionLog.count(:id)

ottengo la seguente eccezione:

  

ActiveRecord :: StatementInvalid (ActiveRecord :: ActiveRecordError: Non   in funzione di aggregazione o gruppo dalla clausola: org.hsqldb.Expression@7be117eb   nella dichiarazione [SELECT COUNT (session_logs.id) AS count_id   DA DOVE session_logs (created_at> = '2010-02-06' E created_at <=   '2010-03-09' E session_type = 'tunnel_client') ORDER BY id DESC]:

     

SELECT count (session_logs.id) AS count_id DA DOVE session_logs   (Created_at> = '2010-02-06' E created_at <= '2010-03-09' E   session_type = 'tunnel_client') ORDER BY id DESC)

E mi sembra chiaro che la dichiarazione COUNT è la causa del problema in HSQLDB, ma non sono sicuro quale sia la soluzione per risolvere questo problema. SQLite3 e MySQL sia di processo questa istruzione SQL senza alcun problema.

Sono aperto ad usare un database diverso diverso da HSQLDB, ma ha bisogno di essere integrabile nella nostra applicazione sulla JVM. Questo è l'appello di HSQLDB.

È stato utile?

Soluzione

Probabilmente avete trovato un bug nel dell'adattatore ActiveRecord - activerecord-jdbchsqldb-adapter presumo

.

Si può provare a eseguire l'SQL direttamente in qualche sessione di non-ruby SQL? Allora forse si può vedere dove sta andando male e inviare un bug o (meglio), inviare una patch.

Altri suggerimenti

Si può provare a H2 Database , filo è href="http://kenai.com/projects/jruby/pages/RailsWithH2InJNDIOnJetty" rel="nofollow noreferrer"> così . Da wikipedia :

  

Il motore di database è stato scritto da Thomas Mueller. Ha inoltre sviluppato il motore di database Java Hypersonic SQL [1]. Nel 2001, l'Hypersonic SQL è stato fermato, e il gruppo è stato formato HSQLDB di proseguire i lavori sul codice Hypersonic SQL. Il nome è sinonimo di H2 Hypersonic 2, tuttavia H2 non condivide alcun codice con Hypersonic SQL o HSQLDB. H2 è costruito da zero.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top