Question

Je travaille sur le portage d'une application Rails sur JRuby et HSQLDB. Mon objectif est d'incorporer une base de données et le site dans un seul fichier JAR pour le déploiement sur les sites clients. J'ai le site qui fonctionne assez bien depuis le pot, avec quelques problèmes notables.

Quand je fais ce qui suit avec un joli modèle ActiveRecord:

@total = SessionLog.count(:id)

J'obtiens l'exception suivante:

Activerecord :: statutInValid (activeRecord :: acitiveRecorderRor: pas dans la fonction globale ou le groupe par clause: org.hsqldb.expression@7be117eb dans l'instruction [SELECT COUNT (Session_logs.id) comme count_id dans session_logs où (créé_at> = '2010-02- 06 'et créé_at <=' 2010-03-09 'et session_type =' tunnel_client ') Ordre par id desc]:

Sélectionnez Count (Session_logs.id) comme count_id dans session_logs où (créé_at> = '2010-02-06' et créé_at <= '2010-03-09' et session_type = 'tunnel_client') Ordre par id dec)

Il me semble clair que l'instruction Count cause les problèmes dans HSQLDB, mais je ne sais pas quelle est la solution pour résoudre ce problème. SQLite3 et MySQL traitent tous deux cette instruction SQL sans problème.

Je suis ouvert à l'utilisation d'une base de données différente autre que HSQLDB, mais elle doit être intégrée dans notre application sur le JVM. C'est l'attrait de HSQLDB.

Était-ce utile?

La solution

Vous avez probablement trouvé un bug dans l'adaptateur ActiveRecord - activerecord-jdbchsqldb-adapter Je suppose.

Pouvez-vous essayer d'exécuter le SQL directement dans une session SQL non-RUBY? Ensuite, vous pouvez peut-être voir où ça va et soumettre un bogue ou (mieux), soumettre un patch.

Autres conseils

Tu peux essayer Base de données H2, câblez-le Comme alors. De Wikipédia:

Le moteur de la base de données est écrit par Thomas Mueller. Il a également développé le moteur de la base de données Java Hypersonic SQL [1]. En 2001, le SQL hypersonique a été arrêté et le groupe HSQLDB a été formé pour continuer les travaux sur le code SQL hypersonique. Le nom H2 signifie Hypersonic 2, mais H2 ne partage aucun code avec Hypersonic SQL ou HSQLDB. H2 est construit à partir de zéro.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top