2013-11-28 3 views
0

매우 긴 sql을 가지고 있으며 크기는 150000 바이트 이상입니다. Derby 편집기에서 실행 해 보았습니다. 내가 실행할 때 는, 편집기이 오류를 발생클래스 파일 형식 제한을 초과했습니다.

자바 클래스 파일 형식 제한 (들) 초과 : 방법 항목 : E1 코드 길이 (> 65535 158045)를 생성 된 클래스에

이 있습니까 이 한계를 늘리는 방법은 없습니까?

ps : 코드를 몇 조각으로 나누고 싶지 않습니다. 임시 테이블을 사용하고 싶지 않습니다.

+0

어떤 버전의 Derby? – Keerthivasan

+0

derby-10.9.1.0.jar을 사용하고 있습니다. – neverwinter

답변

0

이 제한을 늘릴 방법이 없습니다. 그래서 Derby 대신 대신 SQLite를 사용했습니다.

인 메모리 데이터베이스입니다. 기본 코드 제한은 1000000 바이트 이상입니다. 또한 컴파일 타임에 1000000000 바이트 이상의 코드 제한을 변경할 수 있습니다.

0

불행히도이 제한을 늘릴 방법이 없습니다. relevant part of the JVM spec을 참조하십시오.

SQL을 클래스에 하드 코딩하는 대신 클래스 패스의 리소스 또는 파일 시스템의 알려진 위치에서 텍스트 파일을 통해 읽는 것이 좋습니다.

Derby 편집기 자체에서 클래스를 생성하는 경우 Derby 편집기를이 특정 조회에 사용하지 못할 수 있습니다. 쿼리를 재고하는 것이 좋습니다. 나는 쿼리를 작성하는 더 좋은 방법이있을 거라고 생각했을 것이다. 그것은 그 길이에 유지할 수 없다!

+0

aetheria에게 감사드립니다. 실제 SQL은 Business Intellingece Scoring SQL이기 때문에 너무 길다. 그리고 그것이 효과적이고 길이를 줄이는 방법이 없는지 확인하십시오. 다른 사람들처럼 "무차별 적 SQL"이 아닙니다. – neverwinter

1

이것은 지난 몇 년 동안 더비의 문제였습니다. 예를 들어, DERBY-176, DERBY-732, DERBY-766DERBY-1714 (더 많은 유사점이 있음)을 참조하십시오.

잘 알고있는 모든 사례에서 JVM이 처리 할 수있는 한계까지 줄이기 위해 응용 프로그램에서 발행 한 SQL을 다시 작성할 수있었습니다 (Java 제한이 더비보다 많습니다 한정).

이 문제를 생성하는 SQL을 공유 할 수 있습니까? 아마도 커뮤니티는 그러한 광범위한 바이트 코드를 생성하지 않는 SQL을 구성하는 더 좋은 방법을 제안 할 수 있습니다.

+0

Bryan에게 감사드립니다. 6000 개가 넘는 행이 있기 때문에 실제 SQL을 공유 할 수 없습니다. 비즈니스 Intellingece Scoring SQL이기 때문에 너무 길다. 그리고 그것이 효과적이고 길이를 줄이는 방법이 없는지 확인하십시오. – neverwinter

관련 문제