Я работаю над портированием приложения 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 ') ЗАКАЗАТЬ ПО id DESC]:

ВЫБРАТЬ 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.

0
Alex 8 Мар 2010 в 20:14

2 ответа

Лучший ответ

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

Можете ли вы попробовать запустить SQL непосредственно в каком-нибудь сеансе SQL, отличном от Ruby? Тогда, возможно, вы сможете увидеть, где что-то не так, и сообщить об ошибке или (лучше) отправить патч.

1
Robert Brown 11 Мар 2010 в 02:41

Вы можете попробовать базу данных H2, подключить ее как так . Из wikipedia:

Механизм базы данных написан Томасом Мюллером. Он также разработал ядро ​​базы данных Java Hypersonic SQL [1]. В 2001 году Hypersonic SQL был остановлен, и была создана группа HSQLDB для продолжения работы над кодом Hypersonic SQL. Название H2 расшифровывается как Hypersonic 2, однако H2 не имеет общего кода с Hypersonic SQL или HSQLDB. H2 построен с нуля.

1
clyfe 9 Мар 2010 в 23:48