
После того, как все остальное работало отлично (УРА!), Postgres
отказалась запускаться (не пугайтесь названия — Postgres был упакован как PostgreSQL
дань уважения Полу Аоки, который преобразовал QUEL
процессор языка запросов для использования SQL
WAY еще в первом пакетном выпуске в 1995 году — все, кроме упаковки/бренда, использует это название Postgres
).
Эта ошибка при запуске не была неожиданной, хотя пакет МОГ предвидеть это для обновлений, поскольку все обновленные установки, вероятно, нуждаются в этом, и запустить для нас соответствующий сценарий обновления; этот сценарий можно запустить следующим образом:
postgresql-setup --upgrade --upgrade-from postgresql
К сожалению, это не удалось.
Я проследил цепочку цепочек ошибок — файл журнала в Postgres
домашнем каталоге пользователя, на который указывает промежуточный журнал, выдаваемый stdout
указанной командой, указывал на проблему с Postgis
, который используется при установке.
Наиболее подходящее сообщение об ошибке гласило:
ERROR: could not access file "$libdir/postgis-3"
К сожалению, не было сказано, где $libdir
он должен быть, и, к сожалению, я тоже не знаю, где он находится! Я пока не нашел ни одного каталога, содержащего это имя postgis
.
Я предположил, Postgis
что он не обновлен или, возможно, не установлен, но простая проверка установленных пакетов доказала обратное: он называетсяpostgis-3.2.2-1.fc37.x86_64
Для меня стало неожиданностью то, что в сообщении об ошибке говорилось о том, что не удалось найти часть postgis-3
, а версия 3 все равно установлена.postgis
У меня пока нет решения. Что вы думаете? Это ДОЛЖНО быть распространенной проблемой для Postgres
пользователей, которые также используют Postgis
!
решение1
ПостГИСэто расширение, которое устанавливается как пакет. Вам необходимо установить пакет, который подходит как для вашей основной версии postgresql, так и для версии расширения postgis. Например; postgis32_15
илиpostgis31_14
$libdir
или любые другие предопределенные (в основном идут с компиляцией) конфигурации могут быть изучены с помощьюpg_configклиентское приложение. Вы можете в основном узнатьlibdirвыполнив команду ниже.
pg_config --pkglibdir
если вы не можете найтиpg_configтогда это наиболее вероятно, гдеpsqlкоманда — ( $bindir
) .
решение2
В Fedora 37 вы получите это сообщение об ошибке во время обновления базы данных, если вы не установили пакет postgis-upgrade
.
Таким образом, полная процедура обновления баз данных с поддержкой PostGIS выглядит примерно так:
systemctl start postgresql.service
# => start fails fails and some hints are logged
dnf install postgresql-upgrade postgis-upgrade
postgresql-setup --upgrade
systemctl start postgresql.service
sudo -u postgres psql -f /var/lib/pgsql/update_extensions.sql
sudo -u postgres reindexdb yourdb
В целом, хорошей идеей будет просмотреть журналы обновлений (и стандартные /var/lib/pgsql/data/log/postgresql*.log
) на случай, если там есть какие-то дополнительные подсказки, специфичные для вашей конкретной базы данных.