2010-03-08 29 views
0

我正在將Rails應用程序移植到JRuby和HSQLDB。我的目標是將數據庫和站點嵌入到單個JAR文件中,以便在客戶站點進行部署。我的網站在JAR上運行得非常好,有一些值得注意的問題。在將HSQLDB嵌入到Rails應用程序時無效的SQL

當我做了一個漂亮的世俗ActiveRecord的模型如下:

@total = SessionLog.count(:id) 

我得到以下異常:

ActiveRecord::StatementInvalid (ActiveRecord::ActiveRecordError: Not in aggregate function or group by clause: [email protected] 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)

似乎很清楚,我認爲計數語句引起的麻煩HSQLDB,但我不確定解決方案是如何解決這個問題的。 SQLite3和MySQL都處理這個SQL語句沒有問題。

我打算使用HSQLDB以外的其他數據庫,但它需要嵌入到JVM上的應用程序中。這是HSQLDB的吸引力。

回答

1

你可能已經發現了一個bug在ActiveRecord的適配器 - activerecord-jdbchsqldb-adapter我承擔。

你可以嘗試直接在一些非ruby SQL會話中運行SQL嗎?那麼也許你可以看到它出錯的地方,並提交一個錯誤或(更好),提交補丁。

1

你可以試試H2 Database,連線吧likeso。從wikipedia

The database engine is written by Thomas Mueller. He also developed the Java database engine Hypersonic SQL [1]. In 2001, the Hypersonic SQL was stopped, and the HSQLDB Group was formed to continue work on the Hypersonic SQL code. The name H2 stands for Hypersonic 2, however H2 does not share any code with Hypersonic SQL or HSQLDB. H2 is built from scratch.

相關問題