PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

създаването на разширение pg_cron в docker-entrypoint-initdb.d е неуспешно

pg_cron може да се зарежда само като споделена библиотека. Трябва да го посочите в postgres.conf файл. Тъй като всички скриптове в docker-entrypoint-init.d се изпълняват след стартиране на postgres сървъра (с pg_ctl start ), всички промени в shared_preload_libraries в postgres.conf може да стане достъпен след рестартиране (с pg_ctl restart ).

Пример от реалния свят:

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;

Забележка :

  1. редът на изпълнение на скрипта има значение и се подрежда по имена на файлове
  2. pg_cron става наличен в db посочено с cron.database_name


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. За какво се използва конструктор на ред?

  2. Какво е еквивалентът на DO блок за Postgres <9.0

  3. Избиране, докато редът съвпадне в postgresql?

  4. Drop колона не премахва препратките към колони изцяло - postgresql

  5. Как да попълните база данни postgresql с Mrjob и Hadoop