Ошибка Postgres: ни один существующий локальный кластер не подходит в качестве цели по умолчанию
У меня есть старый проект, в который я пытаюсь вернуться, но я не могу войти в postgres. Выполнение sudo -u postgres psql
дает мне:
Error: No existing local cluster is suitable as a default target.
Please see man pg_wrapper(1) how to specify one.
Мне интересно, может ли это быть, потому что я обновил postgres до версии 9.4 несколько месяцев назад. Это мой вывод для dpkg --get-selections |grep postgres
:
postgresql install
postgresql-9.3 install
postgresql-9.4 install
postgresql-client-9.3 install
postgresql-client-9.4 install
postgresql-client-common install
postgresql-common install
postgresql-contrib install
postgresql-contrib-9.3 install
postgresql-contrib-9.4 install
postgresql-server-dev-9.3 install
Это мои текущие кластеры из pg_lsclusters
:
Ver Cluster Port Status Owner Data directory Log file
9.4 apps 5434 online postgres /var/lib/postgresql/9.4/apps /var/log/postgresql/postgresql-9.4-apps.log
9.4 main 5433 online postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log
Что я могу сделать, чтобы снова получить доступ к postgres? Googling не очень помог.
Ответы
Ответ 1
Поскольку ни один из ваших кластеров не прослушивает порт по умолчанию 5432
, psql
(который на самом деле является ссылкой на pg_wrapper
), не знает, какой из них должен быть "по умолчанию".
Вы можете использовать psql --cluster 9.4/apps [other arguments]
для доступа к первому кластеру и psql --cluster 9.4/main [other arguments]
для второго.
Или альтернативно определите переменную среды $PGCLUSTER
для 9.4/apps
или 9.4/main
Они исходят из правил № 2 и № 4 (из 8) pg_wrapper manpage.
Ответ 2
Если вам все равно, что ваш кластер по умолчанию, и просто хотите, чтобы все работало так, как раньше, просто укажите порт, с которым хотите подключиться, с
psql -p 5432
и postgres не будут пытаться быть умными для вас и использовать "кластер", что бы это ни было.
Ответ 3
Просто установите PGCLUSTER
export PGCLUSTER=9.4/main