pg_cron
kann nur als gemeinsam genutzte Bibliothek geladen werden. Sie müssen es in postgres.conf
angeben Datei. Da alle Skripte in docker-entrypoint-init.d
werden ausgeführt, nachdem der Postgres-Server gestartet wurde (mit pg_ctl start
), alle Änderungen an shared_preload_libraries
in postgres.conf
kann nach dem Neustart verfügbar werden (mit pg_ctl restart
).
Beispiel aus der realen Welt:
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;
Hinweis :
- Die Reihenfolge der Skriptausführung ist wichtig und wird nach Dateinamen geordnet
pg_cron
wird in db verfügbar angegeben mitcron.database_name