Ошибка Postgresql: не удалось открыть сегмент 1 базы отношений/20983/2416

Я запускаю запрос Postgresql и получаю следующую ошибку:

ActiveRecord::StatementInvalid (PGError: ОШИБКА: не удалось открыть сегмент 1 отношения base/20983/24161 (целевой блок 5046584): нет такого файла или каталога

Запрос имеет формат «ВЫБЕРИТЕ «местоположения».* ИЗ «местоположений» ГДЕ («местоположения». «id» IN (115990, 78330, 77891, 78248, ...)» с примерно 600 идентификаторами в предложении IN - я знаю, что это не оптимальный запрос, но это то, с чем мне нужно работать на данный момент!

На сервере работает PostgreSQL 8.4.6 на x86_64-pc-linux-gnu, скомпилированный GCC gcc-4.4.real (Ubuntu 4.4.1-4ubuntu9) 4.4.1, 64-бит. Также установлен Postgis 1.5, а таблица локаций содержит столбец геометрии.

Кто-нибудь знает, что может быть причиной ошибки? Спасибо!


person kokonut    schedule 09.01.2011    source источник


Ответы (1)


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

person araqnid    schedule 09.01.2011
comment
Спасибо, не то, что я надеялся услышать, но, по крайней мере, теперь я знаю ответ! Есть ли способ получить больше информации об ошибке? Странно то, что если я делаю полный выбор для всей таблицы, я получаю все возвращаемые записи, но запрос выдает ошибку. Поэтому я предполагаю, что это как-то связано с повреждением индекса/первичного ключа, поэтому надеюсь, что смогу просто восстановить его... - person kokonut; 09.01.2011
comment
если вы сделаете select oid::regclass from pg_class where relfilenode = 24161, это должно сказать вам, какое отношение (таблица или индекс) является проблематичным. вы можете запустить postgresql с параметром -P, чтобы заставить его избегать использования индексов для доступа к системным таблицам, пока вы пытаетесь перестроить что-то. но имхо, вы должны стремиться к тому, чтобы вы могли выгрузить данные и перестроить базу данных, поскольку это может быть только первой из многих проблем с вашей текущей. - person araqnid; 09.01.2011