Ошибка в базе данных Postgres Неверный заголовок страницы - PullRequest
1 голос
/ 05 мая 2011

Я использую Django ORM для доступа к базе данных PostgreSQL, и в редких случаях Django генерирует ошибку DatabaseError, такую ​​как django.db.utils.DatabaseError: invalid page header in block 299560 of relation base/83966/84778.

Я исследовал это, и похоже, что база данных каким-то образом повреждена. Это очень расстраивает, потому что я всегда аккуратно выключал базу данных при перезагрузке, и каждая проверка, которую я могу выполнить на своем диске, говорит, что с самим диском все в порядке. Поэтому я могу только заключить, что PostgreSQL на самом деле не совместим с ACID и портит мои данные в редких случаях.

Единственное исправление, которое мне удалось найти, - это удалить и заново создать мою базу данных. Очевидно, это не совсем исправление, так как я теряю все свои данные. Есть ли другой способ решить эту проблему, или я должен перейти на более надежную базу данных, такую ​​как MySQL?

Я использую Postgresql-8.4.8 в Ubuntu 10.04.

1 Ответ

1 голос
/ 06 мая 2011

В большинстве случаев вы видите, что у вас либо плохая память, либо плохой диск.Разница между PostgreSQL и MySQL заключается в том, что PostgreSQL видит это и жалуется, как и должен, в то время как MySQL часто просто продолжает без остановки.Я думаю, что база данных, которая останавливается, когда машина повреждает хранилище данных, является более надежной базой данных, потому что она позволяет вам сразу же узнать о проблемах с вашей системой.

Кстати, PostgreSQL может пережить аварийное отключение (потянитеподключите заднюю часть машины) просто отлично, если жесткие диски не врут о fsync.

Попробуйте memtest86, чтобы убедиться, что ваша память в порядке, и сделайте что-то вроде

sudodd if = / dev / sdc1 of = / dev / null

, чтобы узнать, нет ли ошибок.Что-нибудь в журнале dmesg или сообщениях об ошибках чтения-записи диска?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...