2012-03-18 6 views
1

오라클에는 큰 따옴표로 작성된 테이블이 소문자로 있습니다. MySQL에서와 마찬가지입니다.오라클 확장 및 레일즈에서 소문자 테이블 사용

Oracle Enhanced는 이름 주위에 큰 따옴표가 없으므로 실패합니다.

DESC people; 

그러나이 대신 작동합니다 :

DESC "people"; 

어떻게 오라클은 모두 내 스키마를 다시 실행하지 않고 테이블 이름을 인용 향상 강제 할 수 있습니다. 여기 내 모델 btw입니다.

class Person < ActiveRecord::Base 
end 

편집 :

테이블 이름은 코드의이 작품에서 소문자로 남아 있어야한다. 실제로 DESC은 오류 메시지가 그렇게 표시하더라도 호출되지 않습니다.

https://github.com/rsim/oracle-enhanced/blob/master/lib/active_record/connection_adapters/oracle_enhanced_connection.rb#L30

+1

장기적으로는 스키마를 다시 만드는 것이 가장 좋습니다. – Ben

+0

그것은 내가 두려워하는 것 :-) – greut

답변

0

유일한 가능한 솔루션은 오라클이 처리하고 당신이되고 루비 OCI8하려면 소문자 테이블 이름을 사용하도록 강요하지 않습니다 수 있도록하는 것입니다 상자 밖으로 작업.

Ben이 말했듯이 스키마를 다시 실행하는 것이 해결책이었습니다.

1

내가 뭘하려고 것은

class Person < ActiveRecord::Base 
set_table_name '"people"' 
end 
+0

'set_table_name'은 이제'@ table_name'이며 작동하지 않습니다. – greut