将HSQLDB嵌入到Rails应用程序时无效的SQL

时间:2010-03-08 17:14:05

标签: ruby-on-rails jruby hsqldb jrubyonrails

我正在努力将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的吸引力。

2 个答案:

答案 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吗?然后,也许你可以看到它出错的地方并提交错误或(更好),提交补丁。