sql >> Databasteknik >  >> RDS >> PostgreSQL

att skapa pg_cron-tillägg inom docker-entrypoint-initdb.d misslyckas

pg_cron kan endast laddas som delat bibliotek. Du måste ange det i postgres.conf fil. Eftersom alla skript i docker-entrypoint-init.d exekveras efter att postgres-servern har startat (med pg_ctl start ), alla ändringar av shared_preload_libraries i postgres.conf kan bli tillgänglig efter omstart (med pg_ctl restart ).

Exempel från verkligheten:

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;

Meddelande :

  1. order för skriptkörning är viktig och ordnas efter filnamn
  2. pg_cron blir tillgänglig i db specificeras med cron.database_name


  1. Infoga flera e-postmeddelanden till mysql med ett enda textområde

  2. Referens till oinitierad samling PL/SQL

  3. Skickar Firesbase-avisering till flera användare

  4. Skriva objekt till en MySQL-databas i Scrapy