我正在努力将Rails应用程序移植到JRuby和HSQLDB。我的目标是将数据库和站点嵌入到单个JAR文件中,以便在客户站点进行部署。我从JAR那里得到了很好的工作,但有一些值得注意的问题。
当我使用非常平凡的ActiveRecord模型执行以下操作时:
@total = SessionLog.count(:id)
我得到以下异常:
ActiveRecord :: StatementInvalid(ActiveRecord :: ActiveRecordError:不是 在aggregate函数或group by子句中:org.hsqldb.Expression@7be117eb in statement [SELECT count(session_logs.id)AS count_id FROM session_logs WHERE(created_at> ='2010-02-06'AND created_at< = '2010-03-09'AND session_type ='tunnel_client')ORDER BY id DESC]:
SELECT count(session_logs.id)AS count_id FROM session_logs WHERE (created_at> ='2010-02-06'AND created_at< =''2010-03-09'AND session_type ='tunnel_client')ORDER BY id DESC)
我觉得COUNT语句在HSQLDB中引起了麻烦,但我不确定解决这个问题的方法是什么。 SQLite3和MySQL都没有问题地处理这个SQL语句。
我愿意使用除HSQLDB之外的其他数据库,但它需要嵌入到JVM上的应用程序中。这就是HSQLDB的吸引力。
答案 0 :(得分:1)
您可以尝试H2 Database,连线like so。来自wikipedia:
数据库引擎由Thomas Mueller编写。他还开发了Java数据库引擎Hypersonic SQL [1]。 2001年,Hypersonic SQL停止运行,HSQLDB组成立后继续处理Hypersonic SQL代码。名称H2代表Hypersonic 2,但H2不与Hypersonic SQL或HSQLDB共享任何代码。 H2是从头开始构建的。
答案 1 :(得分:1)
你可能在ActiveRecord适配器中发现了一个错误 - {I}我认为。
您可以尝试在某些非ruby SQL会话中直接运行SQL吗?然后,也许你可以看到它出错的地方并提交错误或(更好),提交补丁。