2011-08-10 4 views
0

저는 Oracle 데이터베이스를 사용하여 RoR 프로젝트를 개발 중입니다. 최근에 다른 데이터베이스에 DBLink를 추가했는데 이것은 SQL에서 완벽하게 작동합니다. 이 자동으로 사용 쿼리가 작동하지 않습니다 물론ActiveRecord가 dblink에서 테이블에 액세스하는 방법 (올바르게)?

NativeException: java.sql.SQLException: ORA-02084: database name is missing a component 
: select * from (SELECT "S985"."S985_947_MODELS_VW"@"R985_A947"."WORLD".* FROM "S985"."S985_947_MODELS_VW"@"R985_A947"."WORLD" ) where rownum <= 14 

: 나는 다음과 같은 코드 내 클래스에 테이블을 추가 할 ...

class ServerModel < ActiveRecord::Base 
    set_table_name "[email protected]_A947.WORLD" 
    set_primary_key "model_barcode" 

    acts_as_reportable 
    acts_as_entity 
end 

... 나는이 오류가 발생합니다. "S985"."S985_947_MODELS_VW"@"R985_A947"."WORLD".*을 선택하지 말고 단지 "S985"."S985_947_MODELS_VW".*을 dblink (@ R985_947.WORLD)의 이름을 복제하지 않고 선택해야합니다.

set_table_name 방법 또는 다른 ActiveRecord 방법으로 가능합니까?

대답은 간단 해 보이지만 해결 방법을 찾을 수 없습니다. 아무도이 문제를 도와 줄 수 있습니까?

감사합니다.

답변

0

DB를 링크의 이름을 포함하는 액티브 레코드를 조정에 대한 확신이,하지만 같은 원격 테이블의보기, 뭔가 만드는 방법에 대한 : 그냥 ROR 응용 프로그램에서보기를 액세스 한 후

create or replace view S985_947_MODELS_VW 
as 
select * from S985_947_MODELS_VW"@"R985_A947"."WORLD" 

을 그리고? 보기를 삽입 할 수 있는지, 업데이트했는지 등 - 당신은 그것을 체크 할 필요가 있습니다. 나는 '단순한'관점 (즉, 그룹별로 단일 테이블에 하나씩)을 업데이트하고 삽입 할 수 있다는 느낌이 들었다.

+0

감사 ... 귀하의 솔루션은 원활하게 작동합니다. – Daan

+0

하나만 더 문제가 있습니다 : 내 default_scope에 잘못된 쿼리 문자열 오류 % '이 있습니다. 내 방법은 다음과 같습니다 : default_scope : conditions => [[ "FULLNAME like '/ IT 인프라/하드웨어/서버/물리적/\ %'또는 FULLNAME like '/ IT INFRASTRUCTURE/HARDWARE/OTHER/\ %'"] 와일드 카드로 %. – Daan

+0

named_scope의 장면 뒤에서 생성되는 실제 쿼리 문자열을 볼 수 있습니까? 아니면 심지어 그 지점까지 도달하기 전에 오류가 있습니까? –

관련 문제