Rails アプリを JRuby と HSQLDB に移植する作業を行っています。私の目標は、データベースとサイトを単一の JAR ファイルに組み込み、顧客のサイトにデプロイすることです。私はサイトを JAR から非常にうまく機能させていますが、いくつかの注目すべき問題があります。
かなりありふれた ActiveRecord モデルで次のことを行うと、次のようになります。
@total = SessionLog.count(:id)
次の例外が発生します。
ActiveRecord::StatementInvalid (ActiveRecord::ActiveRecordError: 集計関数または句によってグループ化されていません: ステートメントの 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の魅力です。