sql >> Database teknologi >  >> RDS >> PostgreSQL

oprettelse af pg_cron-udvidelse i docker-entrypoint-initdb.d mislykkes

pg_cron kan kun indlæses som delt bibliotek. Du skal angive det i postgres.conf fil. Da alle scripts i docker-entrypoint-init.d udføres efter at postgres-serveren er startet (med pg_ctl start ), alle ændringer til shared_preload_libraries i postgres.conf kan blive tilgængelig efter genstart (med pg_ctl restart ).

Eksempel fra den virkelige verden:

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;

Bemærk :

  1. scriptudførelsesrækkefølgen er vigtig og er ordnet efter filnavne
  2. pg_cron bliver tilgængelig i db angivet med cron.database_name


  1. Vælg mærkelige tegn på tekst, fungerer ikke med LIKE-operatoren

  2. På INSERT til en tabel INSERT data i tilsluttede tabeller

  3. Fjern enkelte citater fra where_in i codeigniter

  4. Hvordan skriver jeg en joinforbindelse med disse usædvanlige matchkriterier?