Предыстория: я переносил систему с одного хоста Ubuntu на другой, а вместе с ним и базу данных Postgresql. К сожалению, у меня больше нет доступа к исходному серверу, а файл резервной копии, который я собирался использовать, поврежден.
Я пытался восстановить каталог данных базы данных postgresql (из которой у меня есть копия файловой системы) на целевом сервере. Однако каждый раз, когда я запускаю Postgresql через init.d, я получаю сообщение об ошибке:
Не удалось определить кодировку кластера
Я искал это сообщение об ошибке и ничего не нашел, а мои знания о Postgresql недостаточно обширны, чтобы понять, что именно вызывает проблему.
Исходным хостом был Ubuntu 8.04, целевой 9.10, и оба работали / работают под управлением Postgresql 8.3, установленного из репозиториев ubuntu по умолчанию.
Мы будем очень признательны за любую информацию, которую вы можете дать относительно того, почему может возникнуть эта ошибка.
Спасибо,
Найл
После долгих размышлений я обнаружил, что проблема связана с тем, что хост-система была 32-битной, а целевая - 64-битной. Поскольку Postgresql кодирует каталоги данных по-разному для каждой версии, 64-битный сервер не может загрузить 32-битный каталог данных.
Чтобы решить эту проблему, я просто создал отдельный 32-битный экземпляр Ubuntu и скопировал в него каталог данных. После того, как сервер был запущен, я запустил pg_dumpall, чтобы экспортировать базу данных и передать результат обратно на целевую машину для загрузки.
Я предполагаю, что все файлы правильно принадлежат учетной записи суперпользователя базы данных, и разрешения правильные?
Что находится в вашем файле PG_VERSION?
Возможно, поможет ls -lR.