sql >> Databáze >  >> RDS >> PostgreSQL

vytvoření rozšíření pg_cron v docker-entrypoint-initdb.d se nezdaří

pg_cron lze načíst pouze jako sdílenou knihovnu. Musíte jej zadat v postgres.conf soubor. Protože všechny skripty jsou v docker-entrypoint-init.d se spouštějí po spuštění postgres serveru (pomocí pg_ctl start ), všechny změny shared_preload_libraries v postgres.conf mohou být dostupné po restartu (s pg_ctl restart ).

Příklad ze skutečného světa:

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;

Upozornění :

  1. Na pořadí provádění skriptů záleží a je seřazeno podle názvů souborů
  2. pg_cron bude k dispozici v db specifikované pomocí cron.database_name


  1. Dynamické otáčení tabulky Oracle

  2. Import dat ze souboru JSON do databáze MySQL pomocí java

  3. Když DISTINCT <> GROUP BY

  4. MySQL:Získejte počáteční a koncové časové razítko pro každý den