Napsal jsem skript do indexů REINDEX
v databázi. Zde je 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
Problém je, že tento skript nelze spustit v samostatném režimu. psql
vyžaduje heslo při každém spuštění. Existují také dvě omezení:
Nemohu vytvořit uživatele v databázi bez hesla.
Protože REINDEX
uzamkne tabulky, měl bych použít sleep <num>
mezi každým REINDEX
.
Existuje nějaké automatické řešení?
Máte čtyři možnosti týkající se hesla Výzva:
Jednoduchý příklad s PGPASSWORD
bude něco jako:
PGPASSWORD=YOUR_PASSRORD psql -h YOUR_PG_Host -U YOUR_USER_NAME
Doufám, že to pomůže.
V závislosti na oprávnění vašeho účtu může dojít k selhání příkladu bez zadání databáze, protože uživatelská oprávnění se porovnávají s databází, ke které se připojujete. Je také lepší explicitně specifikovat databázi.
# this can fail.
PGPASSWORD=YOUR_PASSRORD psql -h YOUR_PG_Host -U YOUR_USER_NAME
# this is more likely to work, assuming given account has permissions to that database.
PGPASSWORD=YOUR_PASSRORD psql -h YOUR_PG_Host -U YOUR_USER_NAME -d YOUR_DATABASE
Velmi užitečné odpovědi v tomto vlákně. Jen přidávám toto pro Ubuntu 18.04:
Sudo PGPASSWORD=yourpasswordHere -u postgres psql
Tím se dostanete do postgresu bez hesla Prompt, aniž byste museli nastavovat žádné proměnné prostředí. Toto není trvalé nastavení.