PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

a criação da extensão pg_cron dentro do docker-entrypoint-initdb.d falha


pg_cron pode ser carregado apenas como biblioteca compartilhada. Você deve especificá-lo em postgres.conf Arquivo. Como todos os scripts em docker-entrypoint-init.d são executados após o servidor postgres ser iniciado (com pg_ctl start ), todas as alterações em shared_preload_libraries em postgres.conf pode ficar disponível após o reinício (com pg_ctl restart ).

Exemplo do 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. a ordem de execução do script é importante e é ordenada pelos nomes dos arquivos
  2. pg_cron fica disponível em db especificado com cron.database_name