2016-09-23 4 views
0

실수로 테이블을 pg_class에서 삭제했으며 동일한 테이블이 스키마 내의 다른 서버에 있습니다. 어떻게 복원합니까?실수로 pg_class에서 테이블을 삭제 한 경우 백업에서 테이블을 복원하는 방법은 무엇입니까?

ERROR: type "food_ingredients" already exists` 
HINT: A relation has an associated type of the same name, so you must use a name that doesn't conflict with any existing type.` 
ERROR: relation "food_ingredients" does not exist` 
ERROR: syntax error at or near "19411"` 
LINE 1: 19411 10405 2074 45.3333333333 0.17550085492131515 NULL NULL...` 
ERROR: relation "food_ingredients" does not exist` 

food_ingredients 내가 pg_class에서 제외 테이블입니다 -

나는이 내가지고있어 무엇이

psql -U {user-name} -d {desintation_db} -f {dumpfilename.sql}` 

을 시도했습니다.

답변

0

그게 시스템 카탈로그를 엉망으로 만드는거야.

간단하고 정확한 답변은 백업 ”에서 복원 “ 복원이지만, 그게 당신이 찾고 있던 대답이 아니라는 것을 말해줍니다.

테이블에 속한 유형, 모든 색인, 모든 제약 조건, 토스트 테이블 등을 삭제할 수 있지만 삭제해서는 안되는 것을 삭제하거나 결국 삭제해야합니다. 이전보다 더 큰 혼란.
또한 테이블 파일이 남겨져 식별 및 삭제가 어려울 수 있습니다.

시도하고 당신이 떨어졌다 pg_class 행을 다시 호소 할 것입니다,하지만 당신은 당신이 직접 특정 oid를 삽입하거나 열을 업데이트 할 수 없기 때문에 올바른 oid로를 만들 수 없습니다.

pg_dumpall으로 전체 데이터베이스 클러스터를 덤프하고 initdb으로 새 클러스터를 만들고 거기에 백업을 복원 할 수 있지만 데이터 불일치로 인해 실패 할 수 있습니다.

정말 가장 좋은 방법은 백업을 복원하는 것입니다.

+0

답장을 보내 주셔서 감사합니다. 전체 데이터베이스를 삭제하고 백업을 복원했습니다. 그 밖의 다른 일은 없었습니다. – asdf