2010-05-06 4 views

답변

123

이 오류의 원인을 파악했습니다.

내 응용 프로그램이 데이터베이스 연결을 열고 실행을위한 SELECT 문을 준비했습니다.

한편 다른 스크립트는 위의 SELECT 문에서 반환되는 열 중 하나의 데이터 형식을 변경하여 데이터베이스 테이블을 수정하고있었습니다.

데이터베이스 테이블을 수정 한 후 응용 프로그램을 다시 시작하여이 문제를 해결했습니다. 이렇게하면 데이터베이스 연결이 재설정되므로 준비된 명령문을 오류없이 실행할 수 있습니다.

+3

나는 PostgreSQL 9.0.4에서 Ruby on Rails 3.1-pre5를 사용하고 있습니다. 이것은 ActiveRecord에 의해 자동으로 처리되어야하는 것 같습니다. –

+3

그래, ActiveRecord가 결국이 문제를 처리하기를 바랍니다. MyModel.reset_column_information을 호출하면 재시동을 피하려는 경우 단기간에 문제가 해결 될 것이라고 생각합니다. – nertzy

+0

아직도 나를 위해 변화 없음 ... – alanjds

1

나는 여기를 방문하는 모든 사람에게 ERROR: cached plan must not change result type으로 답변을 추가하고 있습니다.

autosave=conservative으로 드라이버를 구성하면이 문제를 피할 수 있습니다. 이 옵션을 사용하면 서버를 바운스하거나 연결 풀을 없애거나 해결 방법을 찾지 않아도됩니다.

Postgres 9.6 (AWS RDS)에서 재현 된 것으로, 초기 테스트 결과이 옵션으로 문제가 완전히 해결되었음을 나타냅니다.

문서 : https://jdbc.postgresql.org/documentation/head/connect.html#connection-parameters

당신은 문제의 자세한 내용과 역사에 대한 pgjdbcGithub issue 451 볼 수 있습니다.