0a000 ошибка create extension from более не поддерживается

Size:
a
a
a

2021 April 02

Alexander Malykhin

под линуксом smartctl  (smartmontools в дебиано-подобных, в остальных не знаю как пакет называется), под виндой куча вариантов в поиске )

Ну мои копипасты как раз из вывода smartctl

Ну мои копипасты как раз из вывода smartctl

ну так:
231 SSD_Life_Left           0x0000   098   098   011  
98% осталось, как будет 11% — будет «ругаться»

Alexander Malykhin

ну так:
231 SSD_Life_Left           0x0000   098   098   011  
98% осталось, как будет 11% — будет «ругаться»

А, так это проценты))

Ну конкретно в этом параметре да

у вас там 6Тб записано всего :
241 Lifetime_Writes_GiB     0x0032   000   000   000    Old_age   Always       —       6488
6488 — это Гб

ОГРОМНОЕ СПАСИБО! Век живи — век учись))))

пожалуйста

а ресурс 300+ Тб (в спеке нет такой цифры, на nix-е посмотрел, пересчитывать dwpd не хочется)

Коллеги, а кто-нибудь использует под прод 13 версию и 8.3.18 1C ? На линуксе и windows такую ошибку получил

А на 12.5 от постгри (которое 1С) и постгреспро 1с, но клиенты хотят зачем-то 13 :)

Alexander Malykhin

у вас там 6Тб записано всего :
241 Lifetime_Writes_GiB     0x0032   000   000   000    Old_age   Always       —       6488
6488 — это Гб

Мне и процентов достаточно

Alexander Malykhin

ну так:
231 SSD_Life_Left           0x0000   098   098   011  
98% осталось, как будет 11% — будет «ругаться»

А куда оно обычно ругается в линупсах?

Или journalctl смотреть на ошибки

А куда оно обычно ругается в линупсах?

ну не могу сказать за всех, в debian/ubuntu будет спамить на почту (если настроена) и в сислог

это если не отключено, конечно

Коллеги, а кто-нибудь использует под прод 13 версию и 8.3.18 1C ? На линуксе и windows такую ошибку получил

Мы пытались использовать ПГ13 с 8.3.18, но при добавлении ИБ в кластер 1С получили такую ошибку:

Ошибка при выполнении операции с информационной базой
Ошибка СУБД:
0A000: ERROR:  CREATE EXTENSION … FROM is no longer supported
LINE 1: …reate extension if not exists mchar schema public FROM unpac…

В 13 ПГ запретили FROM unpackaged из-за проблем с безопасностью:
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=70a77320

Проблема, что базу с версии 9.6 переносили через pg_dump/restore! Если загружать через ДТ — то норм!


Я установил PostgreSQL 9.x и PostGIS 1.5 / 2.0 несколько раз, и у меня никогда не было этой проблемы.

Я только что установил новый сервер CentOS 6.3, и у меня работает Postgres 9.3, как и ожидалось. Я бегал

yum install postgis2_93

и я могу видеть файлы в

/usr/pgsql-9.3/share/contrib/

однако, когда я бегу

CREATE EXTENSION postgis;

я получил

ERROR:  could not open extension control file "/usr/pgsql-9.3/share/extension/postgis.control": No such file or directory

Учебники ( # 1 , # 2 ), которые я использовал, не показывают никаких шагов между установкой PostGIS и созданием расширения.

Чего мне не хватает?






Ответы:


Если вам удастся найти файл postgis.sql, вы можете запустить его в своей базе данных (и в файлеatial_ref_sys.sql), чтобы вручную разместить вашу базу данных. Сообщите об отсутствующем контрольном файле упаковщику, это большая проблема.


У меня просто была такая же проблема на Ubuntu Server 14.04. Я установил postgisрасширение из официальных репозиториев Ubuntu, используя apt-get install postgis.

Тогда find /usr -name postgis.controlне вернул никаких результатов.

Причина не extension/postgis.controlбыла установлена, потому что постгис-скрипты не были установлены.

$ aptitude search postgis
i   libpostgis-java                                  - Geographic objects support for PostgreSQL -- JDBC support 
i   postgis                                          - Geographic objects support for PostgreSQL                 
p   postgis:i386                                     - Geographic objects support for PostgreSQL                 
i   postgis-doc                                      - Geographic objects support for PostgreSQL -- documentation
i   postgresql-9.3-postgis-2.1                       - Geographic objects support for PostgreSQL 9.3             
p   postgresql-9.3-postgis-2.1:i386                  - Geographic objects support for PostgreSQL 9.3             
i   postgresql-9.3-postgis-2.1-scripts               - PostGIS for PostgreSQL 9.3 -- scripts -- dummy package    
i   postgresql-9.3-postgis-scripts                   - Geographic objects support for PostgreSQL 9.3 -- scripts 

Решение состоит в том, чтобы установить это.

На Debian-подобных дистрибутивах:

apt-get install postgis*

Менеджер пакетов aptitude автоматически определит правильные версии пакетов для установки. Postgis-doc также будет установлен.

РЕДАКТИРОВАТЬ

Как некоторые люди заметили в комментариях, postgis*это не является обязательным, поскольку оно устанавливает некоторые пакеты, которые строго не требуются, чтобы заставить его работать.

Обязательные пакеты postgisи postgresql-9.x-postgis-scriptsметапакеты. Они выбирают правильную реальную версию для вашей системы. Таким образом, команды для установки необходимых пакетов

 $ sudo apt-get install postgis postgresql-9.3-postgis-scripts

для postgresql-9.3. Ubuntu 16.04запускается, postgresql-9.5поэтому команда становится:

 $ sudo apt-get install postgis postgresql-9.5-postgis-scripts

Вы можете проверить успешность операции, выполнив следующую команду:

find /usr -name postgis.control

На моем сервере он теперь возвращает:

/usr/share/postgresql/9.3/extension/postgis.control

Теперь вы можете включить расширение в любой базе данных на вашем сервере postgres:

  • подключиться к вашей БД с суперпользователем (postgres по умолчанию)
  • бегать CREATE EXTENSION postgis;

Ваша общедоступная схема теперь содержит все объекты и функции Postgis.







В Ubuntu 14.04 вам также нужно установить postgresql-9.3-postgis-scriptsпакет. После того как я побежал

sudo apt-get установить postgis postgresql-9.3-postgis-scripts

Я тогда смог успешно запустить

СОЗДАТЬ РАСШИРЕНИЕ postgis;

в моей базе данных для инициализации PostGIS.


У меня была такая же проблема, я просто запустил команду

sudo apt-get install postgis

Я использовал Ubuntu 18.04




Другим источником, который вызвал проблему, может быть отсутствующий пакет PostGIS, это можно определить в меню установки или в вашем случае впоследствии. Таким образом, откройте открытые окна, перейдите в PostgreSQL и запустите Application Stack Builder . Затем выберите PostgreSQL, с этим загружаются возможные приложения. Для комплекта PostGIS вам просто нужно установить расширение, подходящее для вашей операционной системы (32- или 64-битную), просто напрямую в Spatial Extensions .

Ведь вот рекомендуемые шаги:

  1. запустить приложение Stack Builder
  2. Прямо к пространственным расширениям
  3. Установить пакет PostGIS

Теперь вы можете добавить расширение с помощью CREATE EXTENSION postgis;вашего SQL-запроса.


Я столкнулся с той же проблемой, думаю, проблема в том, что пакет postgis2_93 не установлен в ожидаемом месте, как и ожидал postgresql. Вы можете попробовать использовать другой репо, который может дать вам правильное место. Или вы можете искать, чтобы добавить расширения вручную, указав место. В моем случае файл находится в /usr/pgsql-9.4/


У меня был худший кошмар при установке Postgis 2.X на SLES 12 SP1. который не имеет совместимого пакета в репозитории Zypper

Вот как это решается на моем экземпляре сервера Postgres под управлением 9.4.X

Prerequsite пакеты, которые я установил до PostGis на основе ошибок

  1. Proj 4 Скачать исходный код Cold, Build -> make install
  2. установить Gdal andjibson, добавив zypper repo zypper addrepo http://download.opensuse.org/repositories/Application:Geo/SLE_12_SP1_Backports/Application:Geo.repo
  3. zypper установить gdal gdal-devel libjson-c-devel libjson

Установка Postgis

  • Загрузить исходный код postgis ( http://download.osgeo.org/postgis/source/postgis-2.3.0rc1.tar.gz )

  • Перейдите в папку Post gis ./configure —with-pgconfig = / usr / lib / postgresql94 / bin / pg_config —with-geosconfig = / usr / local / bin / geos-config make make install

теперь, если вы идете в postgress и создаете расширение postgis; будет работать

Важно, чтобы
при настройке вы указали путь pg-config и geosconfig, и вы НЕ ДОЛЖНЫ включать «без растра», так как RASTER играет главную роль в создании расширения postgis


Для Ubuntu 16.04 выполните эту команду:

sudo apt-get install postgis postgresql-9.6-postgis-2.3-scripts

обратите внимание, что вы должны указать свой номер версии для postgresql (9.6 в моем случае) и postgis (2.3 в моем случае).


Если вы используете brew, удалите PostGIS и переустановите его. Это создаст файлы расширения.



В некоторых дистрибутивах расширения упаковываются в пакет postgresql-contrib. Это, безусловно, верно для RedHat / CenOS, где расширения находятся в postgresql-contrib, где xx — номера magor и вспомогательных выпусков без полных остановок (postgresql95-contrib для postgres 9.5).


Для меня, используя Fedora 25 и pg 9.5, это сработало, когда я сделал следующие изменения:

  • Установить пакет yum postgis

    $ yum установить postgis2_95

  • Загрузите пакет .deb сценариев Postgis

  • Извлеките его и скопируйте каталоги ‘contrib’ и ‘extension’ в распакованном файле usr / share / postgresql / 9.5 по тому же пути в вашем pgsql (возможно, изменив права доступа на).

  • Перезагрузите сервер


В моем случае (Linux Mint 18.1 Serena) мне пришлось удалить posgresql-9.5и postgisзаново установить из репозитория по умолчанию.

sudo apt remove postgis*
sudo apt remove postgresql*

И установите версию 9.6 из репозитория PosgreSQL :

sudo apt install postgresql-9.6 postgresql-9.6-postgis-2.3 postgresql-9.6-postgis-2.3-scripts postgresql-contrib-9.6

Я не уверен, версия имеет какое-либо отношение к отсутствующему postgis.controlфайлу. Но я все равно хотел версию 9.6.

Size:
a
a
a

2021 April 02

Alexander Malykhin

под линуксом smartctl  (smartmontools в дебиано-подобных, в остальных не знаю как пакет называется), под виндой куча вариантов в поиске )

Ну мои копипасты как раз из вывода smartctl

Ну мои копипасты как раз из вывода smartctl

ну так:
231 SSD_Life_Left           0x0000   098   098   011  
98% осталось, как будет 11% — будет «ругаться»

Alexander Malykhin

ну так:
231 SSD_Life_Left           0x0000   098   098   011  
98% осталось, как будет 11% — будет «ругаться»

А, так это проценты))

Ну конкретно в этом параметре да

у вас там 6Тб записано всего :
241 Lifetime_Writes_GiB     0x0032   000   000   000    Old_age   Always       —       6488
6488 — это Гб

ОГРОМНОЕ СПАСИБО! Век живи — век учись))))

пожалуйста

а ресурс 300+ Тб (в спеке нет такой цифры, на nix-е посмотрел, пересчитывать dwpd не хочется)

Коллеги, а кто-нибудь использует под прод 13 версию и 8.3.18 1C ? На линуксе и windows такую ошибку получил

А на 12.5 от постгри (которое 1С) и постгреспро 1с, но клиенты хотят зачем-то 13

Alexander Malykhin

у вас там 6Тб записано всего :
241 Lifetime_Writes_GiB     0x0032   000   000   000    Old_age   Always       —       6488
6488 — это Гб

Мне и процентов достаточно

Alexander Malykhin

ну так:
231 SSD_Life_Left           0x0000   098   098   011  
98% осталось, как будет 11% — будет «ругаться»

А куда оно обычно ругается в линупсах?

Или journalctl смотреть на ошибки

А куда оно обычно ругается в линупсах?

ну не могу сказать за всех, в debian/ubuntu будет спамить на почту (если настроена) и в сислог

это если не отключено, конечно

Коллеги, а кто-нибудь использует под прод 13 версию и 8.3.18 1C ? На линуксе и windows такую ошибку получил

Мы пытались использовать ПГ13 с 8.3.18, но при добавлении ИБ в кластер 1С получили такую ошибку:

Ошибка при выполнении операции с информационной базой
Ошибка СУБД:
0A000: ERROR:  CREATE EXTENSION … FROM is no longer supported
LINE 1: …reate extension if not exists mchar schema public FROM unpac…

В 13 ПГ запретили FROM unpackaged из-за проблем с безопасностью:
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=70a77320

Проблема, что базу с версии 9.6 переносили через pg_dump/restore! Если загружать через ДТ — то норм!

Система управления базами данных Postgresql используется для хранения данных в табличной форме. База данных применяет несколько функций к данным, хранящимся в отношениях. Для улучшения и поддержки этих функций в базе данных PostgreSQL есть подход к расширению функциональных возможностей базы данных с помощью объектов SQL.

Эти расширения предназначены для использования в качестве дополнительных операторов для выполнения функций. В PostgreSQL присутствует несколько расширений; некоторые из них описаны в этой статье.

Содержание

  1. Синтаксис создания расширения
  2. Описание синтаксиса
  3. IF NOT EXISTS
  4. Schema_name
  5. CASCADE
  6. Примечания
  7. Создание расширения через pgAdmin
  8. Заключение

Синтаксис создания расширения

CREATE EXTENSION [IF NOT EXISTS ] extensionname
[ WITH ] [ SCHEMA schemaname ]
[ VERSION versionof_extension ]
[ FROM oldversion ]
[ CASCADE ]

Описание синтаксиса

Ключевое слово расширения CREATE создает новое расширение в файле PostgreSQL. В процессе загрузки расширения используются те же привилегии, которые требуются для создания объектов-компонентов. Для этого требуется суперпользователь или владелец, чтобы продолжить.

IF NOT EXISTS

Если какое-либо расширение с тем же именем, которое вы использовали в операторе создания, уже существует, это не вызовет ошибки. Но отображается только идентификатор уведомления, чтобы уведомить пользователя о расширении.

Schema_name

Чтобы установить или загрузить любое расширение, должна существовать схема, в которую вы хотите добавить расширение. Если схема не указана в команде, то по умолчанию используется текущая схема, использующая текущее создание объекта по умолчанию.

CASCADE

Эти функции автоматически устанавливают любое расширение, от которого зависит любое еще не установленное расширение. В то время как зависимости устанавливаются автоматически.

Для процесса реализации откройте оболочку psql, указав имя пользователя и пароль; это продолжится, чтобы начать с подключения базы данных Postgres к пользователю Postgres.

Для процесса реализации откройте оболочку psql,

Как только соединение установлено, теперь вы можете применить любую команду. Ниже мы увидим работу расширения PostgreSQL в базе данных PostgreSQL. Если мы хотим добавить некоторые дополнительные функции или операции в виде расширения PostgreSQL, нам нужно добавить некоторые расширения.

Примечания

Прежде чем использовать команду create extension для загрузки любого расширения в базу данных, необходимо установить файлы, поддерживающие расширения. Предполагается, что расширения, используемые PostgreSQL, защищены от атак, совершенных во время установки.

Это встроенные функции, присутствующие в PostgreSQL. Вам просто нужно добавить их, используя их имя в команде. Например, мы использовали расширение citext. Простой синтаксис, используемый для включения любого расширения в PostgreSQL:

>> CREATE extension <name_of_extension>
>> psql –u db_postgres –d testing
>> CREATE extension citext;

Приведенные выше команды показывают, что PostgreSQL требует прав суперпользователя или владельца для загрузки расширений PostgreSQL. Хотя использование db_postgres не сработало, а расширения не были загружены, мы попытались загрузить расширения с помощью имени пользователя «Postgres».

>> psql –U Postgres –d testing;

Приведенные выше команды показывают, что PostgreSQL

После загрузки мы выбрали уже существующее расширение для загрузки в PostgreSQL. Здесь мы выбрали расширение «citext».

>> CREATE extension citext;

Вы можете видеть, что расширение создано. Чтобы увидеть описание и имена всех расширений, добавленных в Postgres, мы используем ’dx’.

Чтобы увидеть описание и имена всех расширений, добавленны

Добавлено уже три расширения, кроме того, в названиях всех расширений отображается новое расширение citext. Описание расширения включает версию и схему каждого расширения, а также информацию, включая типы данных, административные функции и процедурные языки. Расширение citext отвечает за строки символов с учетом регистра.

Мы добавили расширение только без указания имени схемы или версии. Но вместе с именем схемы можно добавить расширение, как в примере ниже. Схема — это пространство имен, в котором есть объекты базы данных, такие как таблицы, индексы, типы данных, функции и т. д. Вот почему мы используем имя схемы, чтобы легко получить доступ ко всем функциям данных, присутствующих в схеме. Схема по умолчанию является общедоступной.

>> CREATE extension bloom WITH schema public;

Это расширение создано. Схема выбрана как общедоступная. Снова увидим описание расширений. Полный список будет описывать цель каждого описания, например расширение bloom, которое будет иметь метод доступа к bloom, включая единый файловый индекс.

олный список будет описывать цель каждого описания, наприм

Теперь мы будем загружать расширение с явлением, если оно не существует вместе с именем схемы.

>> CREATE extension IF NOT EXISTS store WITH schema public;

Снова проверьте только что установленное расширение. Это расширение помогает функциональности Postgres улучшать тип данных для хранения наборов ключей и значений.

Это расширение помогает функциональности Postgres

Чтобы удалить расширение, будет использоваться приведенная ниже команда. Например, мы хотим удалить «hstore», чтобы использовать следующую команду.

>> DROP extension hstore;

Есть еще один способ использования команды добавления расширения. В этом подходе мы сначала устанавливаем путь поиска в схеме, а затем создаем расширение в этой конкретной схеме.

>> SET search_path = addons;

>> CREATE extension hstore schema public;

Вы можете видеть, что во-первых, search_path установлен, а сообщение «CREATE EXTENSION» показывает, что расширение создано. Таким образом, расширение добавляется и удаляется из оболочки PostgreSQL.

Создание расширения через pgAdmin

Теперь мы увидим добавление индексов через панель pgAdmin PostgreSQL. Указав пароль, вы перейдете дальше в панель базы данных.

Перейдите к левой панели на приборной панели, разверните параметры сервера и разверните базу данных PostgreSQL; будут показаны все базы данных, откройте соответствующую базу данных, например «Postgres».

к левой панели на приборной панели, разверните

В этом разделе вы найдете возможность расширения; разверните это, тогда будут показаны все созданные расширения.

м разделе вы найдете возможность расшир

Щелкнув правой кнопкой мыши по параметру расширения, открывается раскрывающийся список, в котором вы можете создать новое расширение, выбрав параметр создания.

кнопкой мыши по параметру расширения, открывается раскрывающийся

При выборе опции создания открывается новое окно. Теперь вам нужно заполнить все текстовые поля. Например, выберите имя и раскрывающийся список всех открытых расширений. Мы выбрали расширение «autoinc». Опция комментария не является обязательной; вы можете оставить его пустым.

При выборе опции создания открывается новое

После заполнения общей информации вы можете перейти к части «Определение»; здесь упоминается схема расширения и версия. Мы заполним пространство словом «public» в качестве схемы и версией 1.0.

После заполнения общей информации вы можете перейти к части «Определение»

После добавления сохраните изменения. Затем обновите расширения; вы увидите, что новое расширение добавляется к уже существующему расширению.

атем обновите расширения; вы увидите, что новое расш

В панели pgAdmin, если вы хотите удалить какое-либо расширение, вам нужно щелкнуть правой кнопкой мыши расширение, которое вы хотите удалить. Например, здесь мы хотим удалить параметр «autoinc» и выбрать параметр «УДАЛИТЬ/УДАЛИТЬ» в раскрывающемся списке.

если вы хотите удалить какое-либо расширение, вам ну

После этого появится диалоговое окно, которое подтвердит удаление. Выберите «да», чтобы продолжить процесс удаления.

того появится диалоговое окно, которое подтве

Заключение

Статья о «Postgres create extension» включает в себя процесс создания расширений как в оболочке psql, так и в pgAdmin. Некоторые часто используемые расширения также перечислены в статье. Расширения расширяют функциональные возможности объектов PostgreSQL, которые уже присутствуют в базе данных; кроме того, пользователь должен знать базу данных и создание схемы перед установкой расширений.

Информация находится в Makefile исходного установочного пакета.

Для окон Python:

ifeq ($(PORTNAME), win32)

    pytverstr=$(subst .,,${python_version})
    PYTHONDLL=$(subst ,/,$(WINDIR))/system32/python${pytverstr}.dll

Итак, напишите ответ:

  • WINDIR : C: Windows
  • pytverstr используется в make-файле, имеет параметр для определения версии python
  • PYTHONDLL — расположение dll.

Чтобы проверить версию моей установки, я открываю файл plpython3.dll, расположенный в C: Program Files PostgreSQL 9.4 lib (измените путь в своей среде)

С помощью Notepad ++ и поиска PyUnicode_AsUTF8String версия python dll видна в последнем слове (в моем случае python33.dll)

Проверьте свою установку, чтобы выбрать хороший установщик python

SELECT version();

PostgreSQL 9.4.15, скомпилированный Visual C ++ build 1800, 64-разрядный

Поэтому мне нужно установить Python 33 в 64-битной версии.

изменить 2020-10-02

Вся эта информация также есть в документации к двоичному файлу ..pgsql doc installation-notes.html , см. Заголовок Процедурные языки .

изменить 2021-06-11

После установки хорошей версии Python в вашей системе вам необходимо скопировать ее на C:WindowsSystem32

Замена версии python старым именем не является хорошим решением, потому что у вас может быть librairie, которая не работает с этой версией. Сделайте это, если знаете о рисках. Поэтому, если вам нужна новейшая версия python для plpython, скомпилируйте ее или проверьте компиляцию edb, чтобы проверить, содержит ли она то, что вам нужно. Вы можете запросить эту информацию в ЕАБР.


1

GeoStoneMarten
11 Июн 2021 в 17:02

#4643

closed


defect


(fixed)

Reported by: Owned by: strk
Priority: blocker Milestone: PostGIS PostgreSQL
Component: build/upgrade/install Version: master
Keywords: Cc:

Looks like our postgis 3.1 is broken again by PostgreSQL change upstream.

Debbie is showing this error on 3.1.0 (master) run

19:10:38 ERROR:  CREATE EXTENSION ... FROM is no longer supported
19:10:38 LINE 1: CREATE EXTENSION postgis VERSION '3.1.0dev' FROM unpackaged

This must be a test we don’t run in the test run after postgresql is rebuilt since it didn’t error there.

Change History
(18)

Component: postgisbuild/upgrade/install
Owner: changed from pramsey to strk
Milestone: PostGIS 3.1.0PostGIS PostgreSQL
Resolution: fixed
Status: newclosed
Resolution: fixed
Status: closedreopened
Resolution: fixed
Status: reopenedclosed

Note:
See TracTickets
for help on using tickets.


Я установил PostgreSQL 9.x и PostGIS 1.5 / 2.0 несколько раз, и у меня никогда не было этой проблемы.

Я только что установил новый сервер CentOS 6.3, и у меня работает Postgres 9.3, как и ожидалось. Я бегал

yum install postgis2_93

и я могу видеть файлы в

/usr/pgsql-9.3/share/contrib/

однако, когда я бегу

CREATE EXTENSION postgis;

я получил

ERROR:  could not open extension control file "/usr/pgsql-9.3/share/extension/postgis.control": No such file or directory

Учебники ( # 1 , # 2 ), которые я использовал, не показывают никаких шагов между установкой PostGIS и созданием расширения.

Чего мне не хватает?






Ответы:


Если вам удастся найти файл postgis.sql, вы можете запустить его в своей базе данных (и в файлеatial_ref_sys.sql), чтобы вручную разместить вашу базу данных. Сообщите об отсутствующем контрольном файле упаковщику, это большая проблема.


У меня просто была такая же проблема на Ubuntu Server 14.04. Я установил postgisрасширение из официальных репозиториев Ubuntu, используя apt-get install postgis.

Тогда find /usr -name postgis.controlне вернул никаких результатов.

Причина не extension/postgis.controlбыла установлена, потому что постгис-скрипты не были установлены.

$ aptitude search postgis
i   libpostgis-java                                  - Geographic objects support for PostgreSQL -- JDBC support 
i   postgis                                          - Geographic objects support for PostgreSQL                 
p   postgis:i386                                     - Geographic objects support for PostgreSQL                 
i   postgis-doc                                      - Geographic objects support for PostgreSQL -- documentation
i   postgresql-9.3-postgis-2.1                       - Geographic objects support for PostgreSQL 9.3             
p   postgresql-9.3-postgis-2.1:i386                  - Geographic objects support for PostgreSQL 9.3             
i   postgresql-9.3-postgis-2.1-scripts               - PostGIS for PostgreSQL 9.3 -- scripts -- dummy package    
i   postgresql-9.3-postgis-scripts                   - Geographic objects support for PostgreSQL 9.3 -- scripts 

Решение состоит в том, чтобы установить это.

На Debian-подобных дистрибутивах:

apt-get install postgis*

Менеджер пакетов aptitude автоматически определит правильные версии пакетов для установки. Postgis-doc также будет установлен.

РЕДАКТИРОВАТЬ

Как некоторые люди заметили в комментариях, postgis*это не является обязательным, поскольку оно устанавливает некоторые пакеты, которые строго не требуются, чтобы заставить его работать.

Обязательные пакеты postgisи postgresql-9.x-postgis-scriptsметапакеты. Они выбирают правильную реальную версию для вашей системы. Таким образом, команды для установки необходимых пакетов

 $ sudo apt-get install postgis postgresql-9.3-postgis-scripts

для postgresql-9.3. Ubuntu 16.04запускается, postgresql-9.5поэтому команда становится:

 $ sudo apt-get install postgis postgresql-9.5-postgis-scripts

Вы можете проверить успешность операции, выполнив следующую команду:

find /usr -name postgis.control

На моем сервере он теперь возвращает:

/usr/share/postgresql/9.3/extension/postgis.control

Теперь вы можете включить расширение в любой базе данных на вашем сервере postgres:

  • подключиться к вашей БД с суперпользователем (postgres по умолчанию)
  • бегать CREATE EXTENSION postgis;

Ваша общедоступная схема теперь содержит все объекты и функции Postgis.







В Ubuntu 14.04 вам также нужно установить postgresql-9.3-postgis-scriptsпакет. После того как я побежал

sudo apt-get установить postgis postgresql-9.3-postgis-scripts

Я тогда смог успешно запустить

СОЗДАТЬ РАСШИРЕНИЕ postgis;

в моей базе данных для инициализации PostGIS.


У меня была такая же проблема, я просто запустил команду

sudo apt-get install postgis

Я использовал Ubuntu 18.04




Другим источником, который вызвал проблему, может быть отсутствующий пакет PostGIS, это можно определить в меню установки или в вашем случае впоследствии. Таким образом, откройте открытые окна, перейдите в PostgreSQL и запустите Application Stack Builder . Затем выберите PostgreSQL, с этим загружаются возможные приложения. Для комплекта PostGIS вам просто нужно установить расширение, подходящее для вашей операционной системы (32- или 64-битную), просто напрямую в Spatial Extensions .

Ведь вот рекомендуемые шаги:

  1. запустить приложение Stack Builder
  2. Прямо к пространственным расширениям
  3. Установить пакет PostGIS

Теперь вы можете добавить расширение с помощью CREATE EXTENSION postgis;вашего SQL-запроса.


Я столкнулся с той же проблемой, думаю, проблема в том, что пакет postgis2_93 не установлен в ожидаемом месте, как и ожидал postgresql. Вы можете попробовать использовать другой репо, который может дать вам правильное место. Или вы можете искать, чтобы добавить расширения вручную, указав место. В моем случае файл находится в /usr/pgsql-9.4/


У меня был худший кошмар при установке Postgis 2.X на SLES 12 SP1. который не имеет совместимого пакета в репозитории Zypper

Вот как это решается на моем экземпляре сервера Postgres под управлением 9.4.X

Prerequsite пакеты, которые я установил до PostGis на основе ошибок

  1. Proj 4 Скачать исходный код Cold, Build -> make install
  2. установить Gdal andjibson, добавив zypper repo zypper addrepo http://download.opensuse.org/repositories/Application:Geo/SLE_12_SP1_Backports/Application:Geo.repo
  3. zypper установить gdal gdal-devel libjson-c-devel libjson

Установка Postgis

  • Загрузить исходный код postgis ( http://download.osgeo.org/postgis/source/postgis-2.3.0rc1.tar.gz )

  • Перейдите в папку Post gis ./configure —with-pgconfig = / usr / lib / postgresql94 / bin / pg_config —with-geosconfig = / usr / local / bin / geos-config make make install

теперь, если вы идете в postgress и создаете расширение postgis; будет работать

Важно, чтобы
при настройке вы указали путь pg-config и geosconfig, и вы НЕ ДОЛЖНЫ включать «без растра», так как RASTER играет главную роль в создании расширения postgis


Для Ubuntu 16.04 выполните эту команду:

sudo apt-get install postgis postgresql-9.6-postgis-2.3-scripts

обратите внимание, что вы должны указать свой номер версии для postgresql (9.6 в моем случае) и postgis (2.3 в моем случае).


Если вы используете brew, удалите PostGIS и переустановите его. Это создаст файлы расширения.



В некоторых дистрибутивах расширения упаковываются в пакет postgresql-contrib. Это, безусловно, верно для RedHat / CenOS, где расширения находятся в postgresql-contrib, где xx — номера magor и вспомогательных выпусков без полных остановок (postgresql95-contrib для postgres 9.5).


Для меня, используя Fedora 25 и pg 9.5, это сработало, когда я сделал следующие изменения:

  • Установить пакет yum postgis

    $ yum установить postgis2_95

  • Загрузите пакет .deb сценариев Postgis

  • Извлеките его и скопируйте каталоги ‘contrib’ и ‘extension’ в распакованном файле usr / share / postgresql / 9.5 по тому же пути в вашем pgsql (возможно, изменив права доступа на).

  • Перезагрузите сервер


В моем случае (Linux Mint 18.1 Serena) мне пришлось удалить posgresql-9.5и postgisзаново установить из репозитория по умолчанию.

sudo apt remove postgis*
sudo apt remove postgresql*

И установите версию 9.6 из репозитория PosgreSQL :

sudo apt install postgresql-9.6 postgresql-9.6-postgis-2.3 postgresql-9.6-postgis-2.3-scripts postgresql-contrib-9.6

Я не уверен, версия имеет какое-либо отношение к отсутствующему postgis.controlфайлу. Но я все равно хотел версию 9.6.

Система управления базами данных Postgresql используется для хранения данных в табличной форме. База данных применяет несколько функций к данным, хранящимся в отношениях. Для улучшения и поддержки этих функций в базе данных PostgreSQL есть подход к расширению функциональных возможностей базы данных с помощью объектов SQL.

Эти расширения предназначены для использования в качестве дополнительных операторов для выполнения функций. В PostgreSQL присутствует несколько расширений; некоторые из них описаны в этой статье.

Содержание

  1. Синтаксис создания расширения
  2. Описание синтаксиса
  3. IF NOT EXISTS
  4. Schema_name
  5. CASCADE
  6. Примечания
  7. Создание расширения через pgAdmin
  8. Заключение

Синтаксис создания расширения

CREATE EXTENSION [IF NOT EXISTS ] extensionname
[ WITH ] [ SCHEMA schemaname ]
[ VERSION versionof_extension ]
[ FROM oldversion ]
[ CASCADE ]

Описание синтаксиса

Ключевое слово расширения CREATE создает новое расширение в файле PostgreSQL. В процессе загрузки расширения используются те же привилегии, которые требуются для создания объектов-компонентов. Для этого требуется суперпользователь или владелец, чтобы продолжить.

IF NOT EXISTS

Если какое-либо расширение с тем же именем, которое вы использовали в операторе создания, уже существует, это не вызовет ошибки. Но отображается только идентификатор уведомления, чтобы уведомить пользователя о расширении.

Schema_name

Чтобы установить или загрузить любое расширение, должна существовать схема, в которую вы хотите добавить расширение. Если схема не указана в команде, то по умолчанию используется текущая схема, использующая текущее создание объекта по умолчанию.

CASCADE

Эти функции автоматически устанавливают любое расширение, от которого зависит любое еще не установленное расширение. В то время как зависимости устанавливаются автоматически.

Для процесса реализации откройте оболочку psql, указав имя пользователя и пароль; это продолжится, чтобы начать с подключения базы данных Postgres к пользователю Postgres.

Для процесса реализации откройте оболочку psql,

Как только соединение установлено, теперь вы можете применить любую команду. Ниже мы увидим работу расширения PostgreSQL в базе данных PostgreSQL. Если мы хотим добавить некоторые дополнительные функции или операции в виде расширения PostgreSQL, нам нужно добавить некоторые расширения.

Примечания

Прежде чем использовать команду create extension для загрузки любого расширения в базу данных, необходимо установить файлы, поддерживающие расширения. Предполагается, что расширения, используемые PostgreSQL, защищены от атак, совершенных во время установки.

Это встроенные функции, присутствующие в PostgreSQL. Вам просто нужно добавить их, используя их имя в команде. Например, мы использовали расширение citext. Простой синтаксис, используемый для включения любого расширения в PostgreSQL:

>> CREATE extension <name_of_extension>
>> psql –u db_postgres –d testing
>> CREATE extension citext;

Приведенные выше команды показывают, что PostgreSQL требует прав суперпользователя или владельца для загрузки расширений PostgreSQL. Хотя использование db_postgres не сработало, а расширения не были загружены, мы попытались загрузить расширения с помощью имени пользователя «Postgres».

>> psql –U Postgres –d testing;

Приведенные выше команды показывают, что PostgreSQL

После загрузки мы выбрали уже существующее расширение для загрузки в PostgreSQL. Здесь мы выбрали расширение «citext».

>> CREATE extension citext;

Вы можете видеть, что расширение создано. Чтобы увидеть описание и имена всех расширений, добавленных в Postgres, мы используем ’dx’.

Чтобы увидеть описание и имена всех расширений, добавленны

Добавлено уже три расширения, кроме того, в названиях всех расширений отображается новое расширение citext. Описание расширения включает версию и схему каждого расширения, а также информацию, включая типы данных, административные функции и процедурные языки. Расширение citext отвечает за строки символов с учетом регистра.

Мы добавили расширение только без указания имени схемы или версии. Но вместе с именем схемы можно добавить расширение, как в примере ниже. Схема — это пространство имен, в котором есть объекты базы данных, такие как таблицы, индексы, типы данных, функции и т. д. Вот почему мы используем имя схемы, чтобы легко получить доступ ко всем функциям данных, присутствующих в схеме. Схема по умолчанию является общедоступной.

>> CREATE extension bloom WITH schema public;

Это расширение создано. Схема выбрана как общедоступная. Снова увидим описание расширений. Полный список будет описывать цель каждого описания, например расширение bloom, которое будет иметь метод доступа к bloom, включая единый файловый индекс.

олный список будет описывать цель каждого описания, наприм

Теперь мы будем загружать расширение с явлением, если оно не существует вместе с именем схемы.

>> CREATE extension IF NOT EXISTS store WITH schema public;

Снова проверьте только что установленное расширение. Это расширение помогает функциональности Postgres улучшать тип данных для хранения наборов ключей и значений.

Это расширение помогает функциональности Postgres

Чтобы удалить расширение, будет использоваться приведенная ниже команда. Например, мы хотим удалить «hstore», чтобы использовать следующую команду.

>> DROP extension hstore;

Есть еще один способ использования команды добавления расширения. В этом подходе мы сначала устанавливаем путь поиска в схеме, а затем создаем расширение в этой конкретной схеме.

>> SET search_path = addons;

>> CREATE extension hstore schema public;

Вы можете видеть, что во-первых, search_path установлен, а сообщение «CREATE EXTENSION» показывает, что расширение создано. Таким образом, расширение добавляется и удаляется из оболочки PostgreSQL.

Создание расширения через pgAdmin

Теперь мы увидим добавление индексов через панель pgAdmin PostgreSQL. Указав пароль, вы перейдете дальше в панель базы данных.

Перейдите к левой панели на приборной панели, разверните параметры сервера и разверните базу данных PostgreSQL; будут показаны все базы данных, откройте соответствующую базу данных, например «Postgres».

к левой панели на приборной панели, разверните

В этом разделе вы найдете возможность расширения; разверните это, тогда будут показаны все созданные расширения.

м разделе вы найдете возможность расшир

Щелкнув правой кнопкой мыши по параметру расширения, открывается раскрывающийся список, в котором вы можете создать новое расширение, выбрав параметр создания.

кнопкой мыши по параметру расширения, открывается раскрывающийся

При выборе опции создания открывается новое окно. Теперь вам нужно заполнить все текстовые поля. Например, выберите имя и раскрывающийся список всех открытых расширений. Мы выбрали расширение «autoinc». Опция комментария не является обязательной; вы можете оставить его пустым.

При выборе опции создания открывается новое

После заполнения общей информации вы можете перейти к части «Определение»; здесь упоминается схема расширения и версия. Мы заполним пространство словом «public» в качестве схемы и версией 1.0.

После заполнения общей информации вы можете перейти к части «Определение»

После добавления сохраните изменения. Затем обновите расширения; вы увидите, что новое расширение добавляется к уже существующему расширению.

атем обновите расширения; вы увидите, что новое расш

В панели pgAdmin, если вы хотите удалить какое-либо расширение, вам нужно щелкнуть правой кнопкой мыши расширение, которое вы хотите удалить. Например, здесь мы хотим удалить параметр «autoinc» и выбрать параметр «УДАЛИТЬ/УДАЛИТЬ» в раскрывающемся списке.

если вы хотите удалить какое-либо расширение, вам ну

После этого появится диалоговое окно, которое подтвердит удаление. Выберите «да», чтобы продолжить процесс удаления.

того появится диалоговое окно, которое подтве

Заключение

Статья о «Postgres create extension» включает в себя процесс создания расширений как в оболочке psql, так и в pgAdmin. Некоторые часто используемые расширения также перечислены в статье. Расширения расширяют функциональные возможности объектов PostgreSQL, которые уже присутствуют в базе данных; кроме того, пользователь должен знать базу данных и создание схемы перед установкой расширений.

i was trying to restore database on amazon rds.. i am getting error message like:

ERROR:  must be owner of extension plpgsql CREATE EXTENSION
ERROR:  must be owner of extension dblink  CREATE EXTENSION
ERROR:  must be owner of extension pgcrypto

Any idea how to solve this issue ?.

Abel Callejo's user avatar

Abel Callejo

12.8k9 gold badges64 silver badges79 bronze badges

asked Jul 9, 2017 at 5:00

Shamseer PC's user avatar

7

I believe both of those extensions are supported by RDS.
See:

$SHOW rds.extensions;

Retrieved from this link

As for enabling the syntax should be along the lines of

#enable_extension "dblink";

As Craig Ringer mentioned rds_super isn’t a real superuser. So, you can’t create the extensions. However, you should be able to enable them.

As in this example

So, you can ignore the errors, but need to manually enable whatever extensions you need. Also I think pl/pgsql may be already there. Try

$dx

answered Jan 25, 2020 at 3:30

Francisco1844's user avatar

Francisco1844Francisco1844

1,0883 gold badges12 silver badges21 bronze badges

Студворк — интернет-сервис помощи студентам

Всем бодрого времени суток! Очень нужна помощь! 1Ска потухла и выдала ошибку
Ошибка СУБД:
0A000: ERROR: CREATE EXTENSION … FROM is no longer supported
LINE 1: …reate extension if not exists mchar schema public FROM unpac…

cat /var/log/apt/history.log показал что обновился postgres-client, т.к. этот пакет не был в списке hold
Commandline: /usr/bin/unattended-upgrade
Upgrade: postgresql-client-14:amd64 (14.5-3.1C, 14.7-0ubuntu0.22.04.1)

Дампы текущих баз сделать не дает. pg_dump: error: query failed: ERROR: could not access file «$libdir/mchar»: No such file or directory
Бакапов тоже нет! Как вернуть все в зад? Можно ли как то откатить обновление без угрозы потери баз? Или как то по другому исправить положение?

Добавлено через 56 минут
Помог следующий алгоритм действий. Остановить постгрес , скопировать каталог с данными в другое место перед экспериментами, снести постгрес и поставить тот который был до обновления.

Size:
a
a
a

2021 April 02

Alexander Malykhin

под линуксом smartctl  (smartmontools в дебиано-подобных, в остальных не знаю как пакет называется), под виндой куча вариантов в поиске )

Ну мои копипасты как раз из вывода smartctl

Ну мои копипасты как раз из вывода smartctl

ну так:
231 SSD_Life_Left           0x0000   098   098   011  
98% осталось, как будет 11% — будет «ругаться»

Alexander Malykhin

ну так:
231 SSD_Life_Left           0x0000   098   098   011  
98% осталось, как будет 11% — будет «ругаться»

А, так это проценты))

Ну конкретно в этом параметре да

у вас там 6Тб записано всего :
241 Lifetime_Writes_GiB     0x0032   000   000   000    Old_age   Always       —       6488
6488 — это Гб

ОГРОМНОЕ СПАСИБО! Век живи — век учись))))

пожалуйста

а ресурс 300+ Тб (в спеке нет такой цифры, на nix-е посмотрел, пересчитывать dwpd не хочется)

Коллеги, а кто-нибудь использует под прод 13 версию и 8.3.18 1C ? На линуксе и windows такую ошибку получил

А на 12.5 от постгри (которое 1С) и постгреспро 1с, но клиенты хотят зачем-то 13 :)

Alexander Malykhin

у вас там 6Тб записано всего :
241 Lifetime_Writes_GiB     0x0032   000   000   000    Old_age   Always       —       6488
6488 — это Гб

Мне и процентов достаточно

Alexander Malykhin

ну так:
231 SSD_Life_Left           0x0000   098   098   011  
98% осталось, как будет 11% — будет «ругаться»

А куда оно обычно ругается в линупсах?

Или journalctl смотреть на ошибки

А куда оно обычно ругается в линупсах?

ну не могу сказать за всех, в debian/ubuntu будет спамить на почту (если настроена) и в сислог

это если не отключено, конечно

Коллеги, а кто-нибудь использует под прод 13 версию и 8.3.18 1C ? На линуксе и windows такую ошибку получил

Мы пытались использовать ПГ13 с 8.3.18, но при добавлении ИБ в кластер 1С получили такую ошибку:

Ошибка при выполнении операции с информационной базой
Ошибка СУБД:
0A000: ERROR:  CREATE EXTENSION … FROM is no longer supported
LINE 1: …reate extension if not exists mchar schema public FROM unpac…

В 13 ПГ запретили FROM unpackaged из-за проблем с безопасностью:
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=70a77320

Проблема, что базу с версии 9.6 переносили через pg_dump/restore! Если загружать через ДТ — то норм!

Установка PostgreSQL

Правильно перед установкой получить общее представление об устройстве PostgreSQL , но обычно у людей «на это нет времени», поэтому подумайте вот над чем:
— если вы ставите не первый экземпляр субд, а второй или более, то вам нужно разместить его где-то рядом либо на том же диске, либо при существенной нагрузке на другой диск
— или вы хотите обновить старую версию экземпляра субд (кластера) на более новую, то надо помнить не только про установку, но и про подключение баз (там не все так просто, можно напортачить)
— или вы ставите на чистую машину первый раз
— а даже если и первый, то будете ли вы аппаратно резервировать и настраивать туда репликацию (а канала связи например хватит (если через интернет), не будет ли набегать очередь)
— а когда вы определись с номером релиза (посмотрели на соответствие релизам платформы 1С), например 14й, есть вариант собирать из исходников (в основном на курсах разбирается), а есть аж четыре источника пакетов: сайт фирмы 1С (при установке в астру не хватало пакетов) и три варианта на сайте постгреспро 1. Бесплатный https://1c.postgres.ru/ , 2 Postgres Pro Standard и 3. ПостгресПро ентерпрайз . Да еще есть сборки «сертифицированные ФСТЭК», но большинству они не интересны, как и универсальная (ванильная) общая бесплатная без патчей 1С.

И еще один момент касающийся больше первой установки. Проверьте СНАЧАЛА локаль.

ВАЖНО! Если вы будете ставить на свой личный компьютер, то делайте что угодно и когда угодно, НО! если это сервер компании или чужой — будьте добрый сначала сделать резервную копию. И да копии баз будет не достаточно. Сними образ с диска на физическом сервере или файл виртуалки. Для физики есть не одно решение, главное не в теории на практике проделайте, включая тренировку по восстанавлению образа.

Если вы поспешили обновлять/ставить и что то пошло не так, может возникнуть ситуация — «а где же взять старый релиз?». Посмотрите в архиве репозитория Postgres Pro.

Основные проблемы обычно бывают не с самой установкой субд, а с нехваткой дополнительных модулей и библиотек. Программисты и продавцы дистрибутивов считают «мол раз они мучились, то и пользователи должны мучиться» (а на момент написания например для астра-линукс даже платной техподдержки физлиц нет например). Для некоторых старых релизов зависимые пакеты можно попробовать посмотреть здесь. Почему их нельзя в дистрибутив ключить непонятно, но вот так.

Проверка старых следов.

Вы конечно можете пропустить этот раздел…

Подключение репозиториев (установка через интернет).

Начну с интересного — вы должны знать адрес репозитория 🙂 Но так и быть:

wget https://repo.postgrespro.ru/pg1c-14/keys/pgpro-repo-add.sh
sudo sh pgpro-repo-add.sh

Внимание! У вас может быть другой адрес!

Сама установка (инициализация) проходит всего одной строкой в терминале:

sudo apt-get install -y postgrespro-1c-14

Внимание! У вас название дистрибутива может отличаться! Если вы будете ставить постгреспро стандандарт, то пакеты могут например называться так postgrespro-std-14-dev postgrespro-std-14-devel postgrespro-std-14-contrib
В данном примере deb-пакет для убунты, дебиана и их производных (астра и т.п.)

Чтобы вызывать бинарные файлы PostgreSQL без указания пути …

В астра-линукс …

Если у Вас много времени, то давайте сделаем проверку (хотя если что то будет не так и вы и так при установке поймете, хе-хе).

Стартуем службу:

sudo systemctl start postgrespro-1c-14

Проверяем статус:

sudo service postgrespro-1c-14 status

Если все срослось, то будет выглядеть похоже на это:

Необязательный блок…

Зададим пароль пользователя postgres, для этого переключимся на него

sudo su postgres

и выполним запрос к субд через командную сроку, и зададим новый пароль пользователю postgres (вы можете указать любой свой пароль):

/opt/pgpro/1c-14/bin/psql -U postgres -c "alter user postgres with password 'password';"
‘password’ – Ваш пароль, должно вернуть ALTER ROLE
Подробнее с пояснениями на примерах как работать тут.
Вы также можете создать своего юзера:
CREATE USER username SUPERUSER PASSWORD ‘passwordstring’;
И возвращаемся в терминал из окружения postgres:

exit

Заморозка пакетов…

А теперь внимание вопрос: А если передумал и хочу удалить постгрес, решил что погоречился и хочу назад на ms sql server? А помните я чуть выше писал что надо делать снимок с диска, не сделали, да? «Секретные команды» как удалить Postgres здесь

Если у вас сервер торчит в интернет и включен файрволл,..

Если вы не делали блок с перезоданием кластера и параметром —tune=1c, то в некоторых дистрибутивах надо в файле /var/lib/pgpro/1c-14/data/postgresql.conf надо изменить строку:
# listen_addresses = 'localhost'
listen_addresses = '*'

Примечание. Если вы забыли где находится файлы с настройками, посмотрите здесь. Отредактировать командой:
sudo nano /var/lib/pgpro/1c-14/data/postgresql.conf

Также разрешим подключение для всех пользователей по логину и паролю. В файле (/var/lib/pgpro/1c-14/data/pg_hba.conf) изменим разрешения для IPv4.

sudo nano /var/lib/pgpro/1c-14/data/pg_hba.conf
добавляем
host all all 0.0.0.0/0 password

Перезапустите службу postgrespro-1c-14 для того, чтобы применить изменение.

sudo systemctl restart postgrespro-1c-14

Если у вас работает SELinux…

Для оптимальной работы PostgreSQL также потребуется настройка параметров postgresql.conf.

Смотрите также прием перемещения временной статистики в озу

Установка вручную, обычно это дистрибутивы с сайта 1С (или когда нет доступа в интернет) …

Обновления Postgres…

Установка второго экземпляра (кластера) PostgreSQL той же версии…

Обсудить моменты установки PostgreSQL или если возникли ошибки можно тут.

Смотрите также установку сервера 1С 8.3.22 под линукс
Смотрите также месторасположение файлов и каталогов постгреса
Смотрите также Резервное копирование PostgreSQL
Смотрите также настройку регламентов
Смотрите также Подключение ИБ 1С через unix-сокет PostgreSQL
Смотрите также Перенос кластера PostgreSQL на nvme диск
Смотрите также Офлайновая установка PostgreSQL Pro 14 на Аstra linux CE orel 2.12
Смотрите также Как наглядно сравнить два файла

Установка PostgreSQL

3000 рублей

Заказать установку

  • Главная

  • Инструкции

  • PostgreSQL

  • Расширения для PostgreSQL: как установить и для чего использовать

Blog

В PostgreSQL существует огромное количество расширений, которые созданы для простого решения сложных и нестандартных задач. С их помощью можно легко увеличить возможности своей системы управления базами данных, обойти некоторые ограничения и упростить работу аналитиков. 

Расширения делятся на два типа: одна часть поставляется вместе с PostgreSQL (например, в пакете contrib), другая – создана самими пользователями, исходя из их задач и потребностей. После загрузки и установки кастомные функции используются и работают также, как и стандартные.

С помощью расширений можно обработать временные, пространственные и другие типы данных. Не забывайте: если не получается найти готовое решение, вы всегда можете написать его сами!

Расширения Для Postgre SQL  Как Установить И Для Чего Использовать

Установка и управление расширениями

Так как для каждой версии PostgreSQL содержание пакета contrib различается, для начала стоит посмотреть, какие функции доступны в пакете в вашей версии.

Просмотр списка стандартных расширений

Для того чтобы посмотреть расширения, доступные для установки, версию по умолчанию, версию установленного приложения и небольшое описание выполняемых функций, нужно запустить следующую команду:

SELECT * FROM pg_available_extensions

Важно: некоторые возможности доступны только с учетной записи суперпользователя или с учетной записи, имеющей права на установку. Суперпользователь – это такой всемогущий администратор сервера базы данных (в PostgreSQL по умолчанию имеет имя postgres).

Установка

Давайте подробно разберем команду, с помощью которой можно установить любые PostgreSQL расширения:

CREATE EXTENSION IF NOT EXISTS extension_name
WITH SCHEMA schema_name
VERSION version
CASCADE

В команде мы также указали необязательные, но полезные параметры, которые можно использовать при установке.

  • IF NOT EXIST: проверка существования расширения с таким именем.
  • WITH SCHEMA: имя схемы, для которой будет произведена установка. Если не указано, то установится в текущую схему.
  • VERSION: версия для установки. Если не указано, то будет установлена последняя.
  • CASCADE: автоматическая установка всех дополнительных расширений, необходимых для работы.

Важно: после установки с помощью этой команды требуется внести определенные записи в файл конфигурации PostgreSQL, а потом перезапустить сервер.

Обновление

Новая версия почти всегда лучше старой, не так ли? Создатели дорабатывают код, исправляют ошибки и предлагают новые функции, поэтому обновлять расширение важно и нужно. Для обновления версии до нужной используем команду:

ALTER EXTENSION extension_name
UPDATE TO version

Если не указать параметр version, будет установлена последняя версия.

Удаление

Иногда расширение больше не нужно, а место в памяти для его хранения хотелось бы использовать более рационально. Удалить его можно следующей командой:

DROP EXTENSION IF EXISTS extension_name
CASCADE | RESTRICT

Дополнительные параметры:

  •       IF EXIST: проверка существования расширения.
  •       CASCADE: автоматическое удаление всего, что зависит от этого расширения.
  •       RESTRICT: не удалять расширение, если от него зависят другие объекты.
  1.     pg_stat_statements

PostgreSQL pg_stat_statements позволяет нам узнать, какие именно запросы нагружают систему: сколько раз выполняются и сколько длятся. Так мы можем оценить работу базы данных, найти узкие места и оптимизировать процессы. Так как базы данных бывают весьма объемными, то запросы к ней должны быть оптимальны по времени исполнения. Эти метрики как раз можно увидеть с помощью pg_stat_statements.

Пример использования

Команда показывает SQL запрос (query), время его выполнения (total_min), среднее время выполнения запроса в миллисекундах (avg_ms), а также количество вызовов запроса (calls).

SELECT query, (total_exec_time / 1000 / 60) as total_min, mean_exec_time as avg_ms, calls
FROM pg_stat_statements
ORDER BY 1
DESC LIMIT 10;
  1. pgcrypto

Если вас интересует, как выполнить в PostgreSQL шифрование данных, то вот нужное расширение. Оно использует криптографические функции для шифрования данных (например, паролей). В стандартной конфигурации поддерживаются следующие алгоритмы шифрования: md5, sha1, sha224, sha256, sha384 и sha512. Список алгоритмов можно расширить, сменив значение «по умолчанию» на использование OpenSSL в настройках инструмента.

  1. btree_gist

Для того чтобы использовать разные индексы базы данных PostgreSQL (B-tree и GiST), нужно установить расширение btree_gist. Оно пригодится, если в базе есть пространственные данные, например, координаты города или магазина. Что это за индексы и для чего их использовать?

  • Тип индекса B-tree используется по умолчанию и позволяет проиндексировать любые данные, которые могут быть отсортированы (например, числа и даты). Этот тип индекса хорош и практически универсален, но совсем не подходит для работы с данными, которые невозможно отсортировать.
  • Тип индекса GiST умеет распределять данные любого типа, в том числе геоданные.

ВажноВ дополнение к типичным операторам поиска для индекса B-tree, в btree_gist также поддерживается индекс PostgreSQL «не равно».

  1. Timescaledb

Временные ряды позволяют отслеживать изменения данных с течением времени (например, динамика поступающих заявок, объем продаж, температура воздуха).

Для хранения временных данных существуют специальные базы данных, например, InfluxDB или ClickHouse. Тем не менее, использование специальной базы не подходит для работы с другими типами данных.  Поэтому в некоторых случаях гораздо удобнее использовать расширение Timescaledb, речь о котором пойдёт ниже.

Timescaledb позволяет хранить временные данные и работать с ними. Для работы скачайте нужную версию на официальном сайте и следуйте инструкции для установки. Затем добавьте расширение функцией CREATE EXTENSION, о которой мы рассказывали выше.

  1. hstore

Это расширение базы данных позволяет хранить пары ключей и значений в одном поле данных в PostgreSQL. Подобный тип данных встречается в объектно-ориентированных языках программирования, например в Python.  

С помощью hstore вы можете сохранить связку данных, не нагружая БД дополнительным полем. Например, при работе с базой данных книжного магазина, удобно создать всего один столбец, который будет одновременно хранить количество страниц, жанр и описание иллюстраций для каждой книги.

Пример использования:

  1. Создадим таблицу с полем типа hstore:
CREATE TABLE books (
id serial PRIMARY KEY,
name varchar,
attributes hstore
);
  1.     Заполним значения в таблице:
INSERT INTO books (name, attributes) VALUES (
'Harry Potter and the Philosophers Stone',
'author => "J. K. Rowling",
pages     => 223,
series => "Harry Potter"'
);
  1.     Выведем данные по книгам из серии «Гарри Поттер»:
SELECT name, attributes->'author' as author
FROM books
WHERE attributes->'series' = 'Harry Potter'

Результат

Все атрибуты для отдельной книги будут выглядеть вот так:

SELECT * FROM books WHERE attributes->'series' = 'Harry Potter'

Мы рассмотрели только самые популярные инструменты, но на самом деле их гораздо больше. Поделитесь вашими советами в комментариях!

Возможно, вам также будет интересно:

  • 09h ошибка закрытия чека некорректное значение параметров команды
  • 094 321 ошибка xerox сброс
  • 093974 ошибка на принтере xerox 3045
  • 093933 ошибка на принтере xerox 3045
  • 093 947 ошибка xerox docucentre sc2020

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии