2010-03-08 2 views
0

JRuby 및 HSQLDB에 Rails 앱을 이식하는 중입니다. 필자의 목표는 데이터베이스와 사이트를 단일 JAR 파일에 임베드하여 고객 사이트에 배포하는 것입니다. JAR에서 꽤 잘 작동하는 사이트를 몇 가지 주목할만한 문제가 있습니다.HSQLDB를 Rails App에 임베드하는 동안 유효하지 않은 SQL

것은 나는 아주 평범한 액티브 모델로 다음 작업을 수행 할 때 :

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 문이 문제의 원인이 나에게 분명한 것 같다

@total = SessionLog.count(:id) 

나는 다음과 같은 예외를 얻을 HSQLDB,하지만이 문제를 해결하기위한 해결책이 무엇인지 모르겠습니다. SQLite3과 MySQL은이 SQL 문을 아무런 문제없이 처리합니다.

HSQLDB 이외의 다른 데이터베이스를 사용할 수는 있지만 JVM의 응용 프로그램에 임베드 할 수 있어야합니다. 그것은 HSQLDB의 매력입니다.

답변

1

당신은 아마 액티브 어댑터에서 버그를 발견 한 - 나는 가정 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.

관련 문제