SQL non valido mentre Incorporare HSQLDB in un app Rails
-
18-09-2019 - |
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.
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.