2013-04-08 3 views
3

Я получаю эту странную ошибку(PostgreSQL) ОШИБКА: не удалось открыть отношения

Caused by: org.postgresql.util.PSQLException: ERROR: could not open 
relation base/17369/1684: No such file or directory 

Как оправиться от него? Любые идеи?

Thanks

+5

Результирующий запрос. Это может быть незначительным, но предположим, что это не так. Прочитайте и следуйте этим инструкциям * срочно *: http://wiki.postgresql.org/wiki/Corruption. Затем отредактируйте свой вопрос, чтобы включить базовую информацию, такую ​​как версия Pg, команда, вызывающая ошибку, содержимое файлов журнала PostgreSQL, операционная система, файловая система, недавние инциденты с потерей мощности, сбои, проблемы с дисками и т. Д. Также покажите вывод 'pg_test_fsync' и значение параметра 'fsync' в' postgresql.conf'. –

+0

Очень вероятно сбой диска или случайное удаление файла. –

+0

Сделайте то, что сказал Крейг Рингер. –

ответ

7

Вы потеряли файл, связанный с таблицей 1684 и базой данных 17369. Проверьте файл наличия с именем 1684 в базе каталогов/17369.

Вы можете определить, какая таблица является:

1) получить имя базы данных: select * from pg_database where oid=17369

2) получить имя таблицы (подключение к соответствующей базе данных): select * from pg_class where oid=1684

Вероятно, не намного больше ты можешь сделать. Только восстановление из резервной копии.

1

Для этого может быть несколько причин. Лучше всего, если это разумно, это восстановить резервную копию после запуска вашего оборудования с помощью диагностики.

Если восстановление из резервной копии нежелательно, вам необходимо остановить Postmaster, сделать копию своей базы данных и получить профессиональную помощь как можно скорее. Данные могут быть или не могут быть восстановлены, и вам нужно знать, что это происходит. Кроме того, я бы предложил, помимо ссылки, к которой указывает Крейг, в ​​таком случае (где файлы могут быть удалены), работа над восстановлением из копии, предпочтительно блочную копию всей файловой системы, в другой системе.

FWIW Я наблюдал, как PostgreSQL работал на сильно злоупотребляемом оборудовании и видел множество проблем с повреждением индекса, когда аппаратное обеспечение было выведено за пределы (сервер базы данных выше уровня двери в горячем неровном шкафу, например), но это не похоже один (повреждение индекса относительно легко исправить, но обычно сообщения об ошибках немного разные).

Теперь, кроме того, он может можно восстановить данные с текущей базы данных и резервного копирования. Очевидно, мы этого не узнаем, пока не попытаемся это сделать.

Смежные вопросы