PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

tworzenie rozszerzenia pg_cron w docker-entrypoint-initdb.d kończy się niepowodzeniem

pg_cron mogą być ładowane tylko jako biblioteka współdzielona. Musisz to określić w postgres.conf plik. Ponieważ wszystkie skrypty w docker-entrypoint-init.d są wykonywane po uruchomieniu serwera postgres (za pomocą pg_ctl start ), wszystkie zmiany w shared_preload_libraries w postgres.conf może stać się dostępny po restarcie (za pomocą pg_ctl restart ).

Przykład ze świata rzeczywistego:

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;

Uwaga :

  1. kolejność wykonania skryptu ma znaczenie i jest uporządkowana według nazw plików
  2. pg_cron staje się dostępny w db określony za pomocą 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. jak uzyskać paginację wybierz na slick + postgresql

  2. PostgreSQL z SQL Developer Problem

  3. Jak ustawić domyślną datę wartości Postgresql, taką jak „RRRRMM”?

  4. Czy jest jakiś sposób na wykonanie zapytania wewnątrz wartości ciągu (np. eval) w PostgreSQL?

  5. limit wartości pola z wartością z innej tabeli przed zapisem