sql >> Base de Datos >  >> RDS >> PostgreSQL

falla la creación de la extensión pg_cron dentro de docker-entrypoint-initdb.d

pg_cron solo se puede cargar como biblioteca compartida. Debes especificarlo en postgres.conf expediente. Dado que todos los scripts en docker-entrypoint-init.d se ejecutan después de que se inicia el servidor postgres (con pg_ctl start ), todos los cambios en shared_preload_libraries en postgres.conf puede estar disponible después de reiniciar (con pg_ctl restart ).

Ejemplo del mundo real:

002-setup.sh :

#!/bin/sh

# Remove last line "shared_preload_libraries='citus'"
sed -i '$ d' ${PGDATA}/postgresql.conf

cat <<EOT >> ${PGDATA}/postgresql.conf
shared_preload_libraries='pg_cron,citus'
cron.database_name='${POSTGRES_DB:-postgres}'
EOT

# Required to load pg_cron
pg_ctl restart

003-main.sql :

CREATE EXTENSION pg_cron;

Aviso :

  1. el orden de ejecución del script importa y se ordena por nombres de archivo
  2. pg_cron está disponible en db especificado con cron.database_name