Я только что попытался выполнить pg_upgrade на довольно большом кластере баз данных PostgreSQL с версии 8.3.0 до версии 9.0.4.Все выглядело так, как будто все будет работать нормально, пока на целевом кластере не будет создана новая схема.Он умер, пытаясь создать групповую роль дважды по какой-то причине.
После просмотра всех сценариев было совершенно очевидно, что она дублирует групповую роль 4 раза.Я восстановил базу данных 8.3.0, и было очень очевидно, что в таблице pg_authid
была повторена строка.
Я попытался запустить базу данных в однопользовательском режиме, чтобы попытаться REINDEX TABLE pg_authid
.Это не помогло при попытке создать новый индекс с дублированными значениями.
Я попытался удалить несправедливую роль группы.Это удалило одну из 4 строк в pg_authid
, но, похоже, это еще больше сбило с толку.
Я видел упоминание о том, что запуск полного вакуума на столе может исправить такое повреждение, но у меня мало надежд на эту работу,Поэтому пока данные будут восстановлены, я буду искать идеи.