Escribí un script para REINDEX
indexar en una base de datos. Aqui esta uno de ellos:
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
El problema es que no puedo ejecutar este script en modo independiente. psql
solicita una contraseña cada vez que se ejecuta. También hay dos limitaciones:
No puedo crear un usuario en la base de datos sin contraseña.
Debido a que
REINDEX
bloquea las tablas, debería usarsleep <num>
entre cada unaREINDEX
.
¿Hay alguna solución automática?
postgresql
index
psql
Majid Azimi
fuente
fuente
peer
método de autenticación para conexiones locales. Actualmente solo para Linux, BSD, OS X o Solaris (no Windows)..pgpass
opción, aún debe especificar el nombre de usuario, la base de datos y el nombre de host (si lo hubiera hecho normalmente) en elpsql
comandoexport PGPASSWORD="your_pw"
Un ejemplo simple con
PGPASSWORD
será algo como:Espero eso ayude.
fuente
Dependiendo de los permisos de su cuenta, el ejemplo sin especificar la base de datos puede fallar, porque los permisos de los usuarios se comparan con la base de datos a la que se conecta. Es mejor especificar explícitamente la base de datos también.
fuente
Respuestas muy útiles en este hilo. Solo estoy agregando esto para ubuntu 18.04:
Esto lo llevará a los postgres sin la solicitud de contraseña, sin tener que establecer ninguna variable de entorno. Este no es un escenario permanente.
fuente