我正在将 Rails 应用程序移植到 JRuby 和 HSQLDB。我的目标是将数据库和站点嵌入到单个 JAR 文件中,以便在客户站点进行部署。我的站点在 JAR 中运行良好,但存在一些值得注意的问题。
当我使用非常普通的 ActiveRecord 模型执行以下操作时:
@total = SessionLog.count(:id)
我得到以下异常:
ActiveRecord::StatementInvalid (ActiveRecord::ActiveRecordError: 不在聚合函数或 group by 子句中: org.hsqldb.Expression@7be117eb 在语句 [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 的魅力所在。