2017-04-22 6 views
0

애플 리케이션을 프로덕션으로 복제 할 때, POSTGIS 테이블 컬럼이 잘못 작동하기 시작했다. Rails는 "알려지지 않은 OID 26865"가 있고 그 필드는 String으로 처리된다는 것을 알았다.Rails에서 "알 수없는 OID"오류의 원인은 무엇입니까?

e 대신 e를 생성하는 current_pos 대신. 지. #<RGeo::Geographic::SphericalPointImpl:0x22fabdc "POINT (13.39318248760133 52.52908798020595)"> 나는 0101000020E6100000FFDD958664C92A403619DEE6B2434A40을 얻을 것이다. activerecord-postgis-adapter가 설치되지 않았거나 잘못 설치된 것처럼 보였습니다. 그러나 데이터 유형 RGeo :: Feature :: Point의 존재 여부를 테스트하고 필드에 current_pos = "POINT (13.39318248760133 52.52908798020595)" 을 할당하여이 가능성을 제거했습니다. 그것은 오류없이 진행되었지만 위와 같이 이해할 수없는 또 다른 16 진수를 산출했다.

이상하게도 POSTGIS는 데이터베이스 내에서 올바르게 작동하고있었습니다. ST_DISTANCE 조회에 대해 올바른 결과를 제공합니다. 따라서 쓰기, 쓰기 구문 분석 (포인트에서 16 진수 형식으로), SQL로 조작 및 모든 작업 읽기는 읽기에 대한 구문 분석 만이 아니라 매우 제한된 문제입니다. 내가 올바른 유형을 것 데이터베이스 열을 보장하기 위해 마이그레이션을 사용하려고

는 마이그레이션도에서 서버를 설치하는 재,

undefined method `st_point' for #<ActiveRecord::ConnectionAdapters::PostgreSQL::TableDefinition:0x00000005cb80b8> 

답변

2

내가 솔루션의 모든 종류를하려고 몇 시간을 보냈다주고, 실패 스크래치, 모든 것의 버전 번호를 두 번 확인하고 약간 새로운 버전의 Ruby와 조금 다른 버전의 POSTGIS (내 다른 환경과 일치시키기 위해)를 설치하고, 데이터베이스를 내보내고 깨끗한 것으로 시작하는 등의 작업을 할 수 있습니다. 마이그레이션을 완료하고 "정의되지 않은 메소드 st_point"오류가 발생하면 Github 문제에서 Google을 통해 솔루션을 찾을 수 있었고 실제로는 간단합니다.

config/database.yml에서, postgres에 대해 스왑 아웃 : // postgis : // 데이터베이스 URL에.

production: 
    url: <%= ENV.fetch('DATABASE_URL', '').sub(/^postgres/, "postgis") %> 

그래서 바보 ...

: 당신에게 Heroku를 사용하는 경우,이 못생긴 조작이 필요할 수 있습니다