2010-03-08 2 views
0

Я работаю над переносом приложения Rails в JRuby и HSQLDB. Моя цель - внедрить базу данных и сайт в один JAR-файл для развертывания на клиентских сайтах. У меня есть сайт, хорошо работающий от JAR, с несколькими заметными проблемами.Недопустимый SQL при встраивании HSQLDB в приложение Rails

Когда я следующий с довольно мирской моделью 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)

Кажется, мне ясно, что утверждение COUNT вызывают проблемы в HSQLDB, но я не уверен, какое решение это исправить. SQLite3 и MySQL обрабатывают этот SQL-запрос без проблем.

Я открыт для использования другой базы данных, отличной от HSQLDB, но ее необходимо встраивать в наше приложение на JVM. Это призыв HSQLDB.

ответ

1

Вы, вероятно, нашли ошибку в адаптер ActiveRecord - activerecord-jdbchsqldb-adapter я предполагаю.

Можете ли вы попробовать запустить 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.