Napisałem skrypt do REINDEX
indeksów w bazie danych. Oto jeden z nich:
echo -e "\nreindex for unq_vbvdata_vehicle started at: `date "+%F %T"`" >> ${LOG_FILE}
psql -U ${USERNAME} -h ${HOSTNAME} -d ${DBNAME} -c "REINDEX INDEX scm_main.unq_vbvdata_vehicle;"
if [[ ${?} -eq 0 ]]; then
echo "reindex for unq_vbvdata_vehicle finished at: `date "+%F %T"`" >> ${LOG_FILE}
else
echo "reindex for unq_vbvdata_vehicle failed" >> ${LOG_FILE}
exit 1
fi
Problem polega na tym, że nie mogę uruchomić tego skryptu w trybie autonomicznym. psql
monituje o hasło przy każdym uruchomieniu. Istnieją również dwa ograniczenia:
Nie mogę utworzyć użytkownika w bazie danych bez hasła.
Ponieważ
REINDEX
zamyka tabele, powinienem użyćsleep <num>
między nimiREINDEX
.
Czy jest jakieś automatyczne rozwiązanie?
postgresql
index
psql
Majid Azimi
źródło
źródło
peer
metoda uwierzytelniania dla połączeń lokalnych. Obecnie tylko dla Linuksa, BSD, OS X lub Solaris (nie Windows)..pgpass
opcję, trzeba jeszcze podać nazwę użytkownika, bazy danych i nazwę hosta (czy masz normalnie) wpsql
komendzieexport PGPASSWORD="your_pw"
aby przejść wersja 1Prostym przykładem
PGPASSWORD
będzie coś takiego:Mam nadzieję, że to pomoże.
źródło
W zależności od uprawnień konta przykład bez określenia bazy danych może się nie powieść, ponieważ uprawnienia użytkownika są sprawdzane względem bazy danych, z którą się łączysz. Lepiej jest również wyraźnie określić bazę danych.
źródło
Bardzo pomocne odpowiedzi w tym wątku. Właśnie dodam to dla Ubuntu 18.04:
Spowoduje to przejście do postgres bez pytania o hasło, bez konieczności ustawiania żadnych zmiennych środowiskowych. To nie jest stałe ustawienie.
źródło