Как настроить удаленное подключение к бд postgresql из windows

Содержание:

Как вывести список баз данных и таблиц PostgreSQL с помощью psql

Главное меню » Базы данных » База данных PostgreSQL » Как вывести список баз данных и таблиц PostgreSQL с помощью psql

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

В этой статье объясняется, как использовать базы данных и таблицы на сервере PostgreSQL psql.

Основные команды PostgreSQL в интерактивном режиме:

  • connect db_name – подключиться к базе с именем db_name
  • du – список пользователей
  • dp (или z) – список таблиц, представлений, последовательностей, прав доступа к ним
  • di – индексы
  • ds – последовательности
  • dt – список таблиц
  • dt+ — список всех таблиц с описанием
  • dt *s* — список всех таблиц, содержащих s в имени
  • dv – представления
  • dS – системные таблицы
  • d+ – описание таблицы
  • o – пересылка результатов запроса в файл
  • l – список баз данных
  • i – читать входящие данные из файла
  • e – открывает текущее содержимое буфера запроса в редакторе (если иное не указано в окружении переменной EDITOR, то будет использоваться по умолчанию vi)
  • d “table_name” – описание таблицы
  • i запуск команды из внешнего файла, например i /my/directory/my.sql
  • pset – команда настройки параметров форматирования
  • echo – выводит сообщение
  • set – устанавливает значение переменной среды. Без параметров выводит список текущих переменных (unset – удаляет).
  • ? – справочник psql
  • help – справочник SQL
  • q (или Ctrl+D) – выход с программы

1С:Предприятие Бухгалтерия переход с редакции 2.0 на 3.0. Практика перевода информационной базы для работы в управляемом приложении. Промо

Из информационного выпуска 1С № 16872 от 08.07.2013г. стало известно об относительно скором необходимом переходе на редакцию 1С:Бухгалтерия 3.0. В данной публикации будут разобраны некоторые особенности перевода нетиповой конфигурации 1С:Бухгалтерия 2.0 на редакцию 3.0, которая работает в режиме «Управляемое приложение».
Публикация будет дополняться по мере подготовки нового материала. Публикация не является «универсальной инструкцией».

Update 3. Права доступа. 14.08.2013
Update 4. Добавлен раздел 0. Дополнен раздел 4. Добавлен раздел 7. Внесены поправки, актуализирована информация. 23.11.2013.

1 стартмани

Листинг баз данных

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

Когда пакет PostgreSQL установлен, создается административный пользователь с именем «postgres». По умолчанию этот пользователь может подключиться к локальному серверу PostgreSQL без пароля.

Чтобы получить доступ к psqlтерминалу как пользователь «postgres», запустите:

Из терминала psql выполните мета-команду l или list, чтобы вывести список всех баз данных:

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

Сервер PostgreSQL имеет три базы данных, созданные по умолчанию: template0, template1 и postgres. Первые два – это шаблоны, которые используются при создании новых баз данных.

Если вы хотите получить информацию о размерах баз данных, табличных пространствах по умолчанию и описаниях, используйте l+ или list+. Размер базы данных будет показан, только если текущий пользователь может подключиться к нему.

Чтобы получить список всех баз данных без доступа к оболочке psql, используйте переключатель -c, как показано ниже:

Другой способ составить список баз данных – использовать следующий оператор SQL:

В отличие от мета-команды l, приведенный выше запрос покажет только имена баз данных:

Запуск Apache 2.4 с модулем 1С внутри Docker контейнера

Про Apache и про Linux слышали, наверное, все. А вот про Docker пока нет, но он сильно набирает популярность последнее время и не зря. Поделюсь своим опытом и дам пошаговую инструкцию настройки веб-сервера Apache с модулем 1С внутри Docker контейнера на Linux хосте. При этом сам сервер 1С может находиться совсем на другой машине и на другой операционной системе

Это не важно, главное чтобы Apache смог достучаться до сервера 1С по TCP. В статье дам подробное пояснение по каждой используемой команде со ссылками на документацию по Docker, чтобы не создавалось ощущение непонятной магии

Также прилагаю git репозиторий с описанием всей конфигурации, можете попробовать развернуть у себя буквально за 10 минут.

Утилиты (программы) PosgreSQL:

  • createdb и dropdb – создание и удаление базы данных (соответственно)
  • createuser и dropuser – создание и пользователя (соответственно)
  • pg_ctl – программа предназначенная для решения общих задач управления (запуск, останов, настройка параметров и т.д.)
  • postmaster – многопользовательский серверный модуль PostgreSQL (настройка уровней отладки, портов, каталогов данных)
  • initdb – создание новых кластеров PostgreSQL
  • initlocation – программа для создания каталогов для вторичного хранения баз данных
  • vacuumdb – физическое и аналитическое сопровождение БД
  • pg_dump – архивация и восстановление данных
  • pg_dumpall – резервное копирование всего кластера PostgreSQL
  • pg_restore – восстановление БД из архивов (.tar, .tar.gz)

Примеры создания резервных копий:

Создание бекапа базы mydb, в сжатом виде

Создание бекапа базы mydb, в виде обычного текстового файла, включая команду для создания БД

Создание бекапа базы mydb, в сжатом виде, с таблицами которые содержат в имени payments

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

Создание резервной копии с сжатием в gz

Список наиболее часто используемых опций:

  • -h host — хост, если не указан то используется localhost или значение из переменной окружения PGHOST.
  • -p port — порт, если не указан то используется 5432 или значение из переменной окружения PGPORT.
  • -u — пользователь, если не указан то используется текущий пользователь, также значение можно указать в переменной окружения PGUSER.
  • -a, —data-only — дамп только данных, по-умолчанию сохраняются данные и схема.
  • -b — включать в дамп большие объекты (blog’и).
  • -s, —schema-only — дамп только схемы.
  • -C, —create — добавляет команду для создания БД.
  • -c — добавляет команды для удаления (drop) объектов (таблиц, видов и т.д.).
  • -O — не добавлять команды для установки владельца объекта (таблиц, видов и т.д.).
  • -F, —format — выходной формат дампа, custom, tar, или plain text.
  • -t, —table=TABLE — указываем определенную таблицу для дампа.
  • -v, —verbose — вывод подробной информации.
  • -D, —attribute-inserts — дамп используя команду INSERT с списком имен свойств.

Бекап всех баз данных используя команду pg_dumpall.

Восстановление таблиц из резервных копий (бэкапов):

psql — восстановление бекапов, которые хранятся в обычном текстовом файле (plain text); pg_restore — восстановление сжатых бекапов (tar);

Восстановление всего бекапа с игнорированием ошибок

Восстановление всего бекапа с остановкой на первой ошибке

Для восстановления из tar-арихива нам понадобиться сначала создать базу с помощью CREATE DATABASE mydb; (если при создании бекапа не была указана опция -C) и восстановить

Восстановление резервной копии БД, сжатой gz

Установка pgAdmin 4 на Windows 10

Если PostgreSQL устанавливается на Windows, то в процессе этой установки можно сразу же установить и pgAdmin 4, однако если предполагается, что PostgreSQL будет работать на отдельном сервере, а подключаться к нему мы будем удаленно с клиентского компьютера, например, PostgreSQL мы установили на сервер Linux, то на клиентском компьютере, с которого мы будем подключаться и работать с PostgreSQL, необходимо установить pgAdmin 4, не устанавливая при этом сам сервер PostgreSQL, так как он там просто не нужен. Именно эта ситуация и будет рассмотрена в данной статье, т.е. мы установим только pgAdmin 4, не устанавливая PostgreSQL.

Сейчас мы рассмотрим все шаги, которые необходимо выполнить, чтобы установить pgAdmin 4 на Windows 10.

Шаг 1 – Скачивание дистрибутива программы pgAdmin 4

Первое, что нам нужно сделать – это скачать дистрибутив данной программы.

Затем выбираем операционную систему, на которую мы будет устанавливать pgAdmin 4, в нашем случае Windows», далее выбираем версию pgAdmin 4, актуальная версия располагается сверху.

Щелкаем по соответствующей ссылке, в результате нас перенесет на сайт PostgreSQL, так как pgAdmin – это официальный инструмент для работы с PostgreSQL, здесь нам нужно выбрать тип (т.е. разрядность) нашей операционной системы, кликаем по соответствующей ссылке.

В итоге должен загрузиться исполняемый файл (в моем случае pgadmin4-4.28-x64.exe) размером чуть более 100 мегабайт.

Запускаем скаченный файл.

В окне приветствия нажимаем Next».

Шаг 3 – Принятие условий лицензионного соглашения

Далее, принимаем условия лицензионного соглашения, для этого отмечаем пункт I accept the agreement» и нажимаем Next».

Потом мы можем указать путь к каталогу, в который будет установлена программа, однако можно оставить и по умолчанию, нажимаем Next».

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

Нажимаем Next».

Все готово для установки, нажимаем Install».

Установка началась, она продлится буквально пару минут.

Шаг 7 – Завершение установки pgAdmin 4

Установка будет завершена, когда появится следующее окно, жмем Finish» (если галочка «Launch pgAdmin 4» будет стоять, то после нажатия на кнопку «Finish» запустится программа pgAdmin 4).

Подключение к серверу баз данных PostgreSQL через psql

psql — это интерактивная терминальная программа, предоставляемая PostgreSQL. Она позволяет вам взаимодействовать с сервером баз данных PostgreSQL, например, выполнять операторы SQL и управлять объектами баз данных.

Следующие шаги показывают, как подключиться к серверу баз данных PostrgreSQL через программу psql:

Во-первых, запустите программу psql и подключитесь к PostgreSQL Database Server с помощью пользователя postgres, нажав на икноку psql, как показано ниже:

Во-вторых, введите необходимую информацию, такую как сервер, база данных, порт, имя пользователя и пароль. Нажмите Enter, чтобы принять значения по-умолчанию. В любом случае, вам нужно ввести пароль, который вы указали во время установки.

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

Пожалуйста, не забудьте завершить команду точкой с запятой (;). После нажатия Enter, psql вернёт текущую версию PostgreSQL, установленную в вашей системе.

Зайти в БД

Чтобы начать работу с базой данных нужно знать её имя, например
пусть Вам нужна база даныых, которую назвали просто HeiHei_ru_DB

Воспользуйтесь командой

\c HeiHei_ru_DB

You are now connected to database «HeiHei_ru_DB» as user «postgres».

Если вы работаете в

Linux

и база данных находится на том же хосте можно выполнить

psql -h 127.0.0.1 -d DATABASENAME -U DATABASEUSERNAME

Чтобы посмотреть список таблиц введите

\dt

List of relations
Schema | Name | Type | Owner
———+———+——-+———-
public | person | table | postgres
(1 row)

Чтобы посмотреть всю таблицу person уже можно использовать стандартный

SELECT * FROM person;

Автоматический выбор хоста-мастера

С библиотекой libpq

Чтобы гарантированно подключиться к хосту-мастеру, укажите FQDN всех хостов кластера в аргументе host и передайте параметр target_session_attrs=read-write . Этот параметр поддерживается библиотекой libpq начиная с версии 10:

Чтобы обновить версию библиотеки, которую использует утилита psql :

Для дистрибутивов Linux на основе Debian — установите пакет postgresql-client-10 (например, через apt-репозиторий).

Для ОС, использующих RPM-пакеты, дистрибутив PostgreSQL доступен в yum-репозитории.

Адреса всех хостов в кластере БД можно найти на странице нужного кластера в консоли управления.

С драйвером, поддерживающим только один хост

Если ваш драйвер для подключения к базе данных не позволяет передавать несколько хостов в строке подключения (например, pgx в Go), вы можете подключаться на специальный хост вида c- .rw.mdb.yandexcloud.net .

Это доменное имя всегда указывает на текущий мастер в кластере. Например, для кластера с идентификатором c9qash3nb1v9ulc8j9nm к мастеру можно подключиться так:

Подключение к БД

Чтобы получить доступ к базам данных можно воспользоваться стандартной консолью psql.
Windows:

Если Вы хотите подключиться из

bash в Windows

не забудьте добавить местоположение
psql.exe
(у меня это C:\Program Files\PostgreSQL\12\bin) в PATH

Как это делается описано в статье

PATH

psql.exe -h localhost -p 5433 -U postgres

Linux:

sudo su — postgres

psql

psql (12.7 (Ubuntu 12.7-0ubuntu0.20.04.1))
Type «help» for help.

Если БД на локальном хосте

psql -h 127.0.0.1 -d DATABASENAME -U DATABASEUSERNAME

Получить данные о подключении

\conninfo

You are connected to database «postgres» as user «postgres» via socket in «/var/run/postgresql» at port «5432».

Выдача и отзыв привилегий

Выдать привилегию можно с помощью команды GRANT:

GRANT <привилегии> ON <объект> to <роль>;

Забрать привилегию можно с помощью команды REVOKE:

REVOKE <привилегии> ON <объект> FROM <роль>;

Выданной привилегией можно пользоваться, но нельзя передавать другим ролям. Но владелец или суперпользователь может вместе с привилегией выдать дополнительную опцию, которая разрешит передавать привилегию другим ролям. Выдача привилегии с правом её передачи выполняется с помощью WITH GRAND OPTION:

GRANT <привилегии> ON <объект> to <роль> WITH GRAND OPTION;

Если мы дали привилегию вместе с правом её передачи. А затем роль воспользовалась своим правом и передала привилегию другим ролям. То забрать эту привилегию можно только каскадно у этой роли и у других ролей с помощью CASCADE:

REVOKE <привилегии> ON <объект> FROM <роль> CASCADE;

Можно не отбирать привилегию, а только отобрать право её передачи. Это делается следующим способом:

REVOKE GRANT OPTION FOR <привилегии> ON <объект> FROM <роль>;

Подготовка серверов

Для начала, готовим наши серверы к настройке кластера.

PostgreSQL

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

Вот пример установки сервера PostgreSQL на CentOS 7.

Брандмауэр

При использовании брандмауэра, необходимо открыть TCP-порт 5432 — он используется сервером postgre.

а) Если управление выполняется с помощью Firewalld:

firewall-cmd —permanent —add-port=5432/tcp

firewall-cmd —reload

б) Если используем Iptables:

iptables -A INPUT -p tcp —dport 5432 -j ACCEPT

в) Если используем UFW:

ufw allow 5432/tcp

SELinux

Если активирована система безопасности SELinux (по умолчанию в системах Red Hat / CentOS / Fedora), отключаем ее:

setenforce 0

sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config

Если необходимо, чтобы SELinux работал, настраиваем его.

Подключение к БД PostgreSQL из консоли

Все команды запускаются под пользователем postgres (postgresql-суперпользователь)

psql -l — список баз данных.

psql -d dbname — подключение к БД dbname.

psql -f file.sql — выполнение команд из файла file.sql.

psql -U postgres -d dbname -c «CREATE TABLE test(some_id serial PRIMARY KEY, some_text text);» — выполнение команды в базе dbname.

psql -d dbname -H -c «SELECT * FROM test» -o test.html — вывод результата запроса в html-файл.

Просмотр списка и путей к конфигурационным файлам

Список активных соединений с информацией о: pid процесса, выполняющегося запроса, пользователя, базы данных.

c dbname — подсоединение к БД dbname.

l — список баз данных.

dt — список всех таблиц.

d table — структура таблицы table.

du — список всех пользователей и их привилегий.

dt+ — список всех таблиц с описанием.

dt *s* — список всех таблиц, содержащих s в имени.

i FILE — выполнить команды из файла FILE.

o FILE — сохранить результат запроса в файл FILE.

a — переключение между режимами вывода: с/без выравнивания.

Бекап и восстановление таблиц

В PostgreSQL есть две утилиты для бекапа pg_dump и pg_dumpall . pg_dump используется для бекапа одной базы, pg_dumpall для бекапа всех баз и сервера в целом (необходимо запускать под postgresql-суперпользователем).

Создание бекапа базы mydb, в сжатом виде

Создание бекапа базы mydb, в виде обычного текстового файла, включая команду для создания БД

Создание бекапа базы mydb, в сжатом виде, с таблицами которые содержат в имени payments

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

Создание резервной копии с сжатием в gz

Список наиболее часто используемых опций:

-h host — хост, если не указан то используется localhost или значение из переменной окружения PGHOST.

-p port — порт, если не указан то используется 5432 или значение из переменной окружения PGPORT.

-u — пользователь, если не указан то используется текущий пользователь, также значение можно указать в переменной окружения PGUSER.

-a, —data-only — дамп только данных, по-умолчанию сохраняются данные и схема.

-b — включать в дамп большие объекты (blog’и).

-s, —schema-only — дамп только схемы.

-C, —create — добавляет команду для создания БД.

-c — добавляет команды для удаления (drop) объектов (таблиц, видов и т.д.).

-O — не добавлять команды для установки владельца объекта (таблиц, видов и т.д.).

-F, —format — выходной формат дампа, custom, tar, или plain text.

-t, —table=TABLE — указываем определенную таблицу для дампа.

-v, —verbose — вывод подробной информации.

-D, —attribute-inserts — дамп используя команду INSERT с списком имен свойств.

Бекап всех баз данных используя команду pg_dumpall .

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

  • psql — восстановление бекапов, которые хранятся в обычном текстовом файле (plain text);
  • pg_restore — восстановление сжатых бекапов (tar);

Восстановление всего бекапа с игнорированием ошибок

Восстановление всего бекапа с остановкой на первой ошибке

Для восстановления из tar-арихива нам понадобиться сначала создать базу с помощью CREATE DATABASE mydb; (если при создании бекапа не была указана опция -C ) и восстановить

Восстановление резервной копии БД, сжатой gz

Начиная с версии 9.2 можно восстановить только структуру таблиц с помощью опции —section

Перенос директории с данным (data directory)

Узнать текущий путь

Создадим новую директорию, назначим пользователя и инициализируем

Теперь надо подправить файл с сервисом, который стартует postgresql

Очищение таблицы tablename и обнуление счетчика с ID.

CASCADE нужен на случай если tablename связана с другой таблицей.

Удаление NULL у поля

pgcli утилита командной строки с авто-дополнениям и подсветкой синтаксиса.

Резервные копии (экспорт и импорт дампа)

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

Создание резервной копии

Чтобы создать резервную копию базы и сохранить ее на сервере, необходимо выполнить команду:

pg_dump -h хост -U имя_роли -F формат_дампа -f путь_к_дампу имя_базы

Параметры:

  • — сервер, на котором располагается база; может быть указан localhost, IP-адрес или домен;
  • — имя пользователя PostgreSQL, под которым вы подключаетесь к базе;
  • — формат, в котором будет сохранен дамп; указывается буквами c, t или p: ‘с’ (custom — архив .tar.gz), ‘t’ (tar — архив .tar), ‘p’ (plain — текстовый файл без сжатия, как правило, .sql);
  • — путь сохранения для файла дампа и имя файла;
  • — имя базы данных, для которой создается резервная копия.

Например:

pg_dump -h localhost -U tmweb -F c -f /home/user/backups/dump.tar.gz tmweb

После выполнения команды будет запрошен пароль пользователя Postgres, указанного в команде (в примере — tmweb).

Восстановление из дампа

Импорт дампов, сохраненных в форматах .tar.gz и .tar, выполняется с помощью :

pg_restore -h хост -U имя_роли -F формат_дампа -d имя_базы путь_к_дампу

Параметры:

  • — сервер, на котором располагается база; может быть указан localhost, IP-адрес или домен;
  • — имя пользователя PostgreSQL, под которым вы подключаетесь к базе;
  • — формат, в котором был сохранен дамп; необходимо указать ‘с’ для архива .tar.gz и ‘t’ для архива .tar;
  • — имя базы данных, в которую импортируется дамп;
  • — путь к файлу дампа и имя файла.

Например:

pg_restore -h localhost -U tmweb -F c -d new_db /home/user/backups/dump.tar.gz

Для импорта дампов в формате .sql используется cat:

cat путь_к_дампу | psql -h хост -U имя_роли имя_базы

Параметры:

  • — путь к файлу дампа и имя файла;
  • — сервер, на котором располагается база; может быть указан localhost, IP-адрес или домен;
  • — имя пользователя PostgreSQL, под которым вы подключаетесь к базе;
  • — имя базы данных, в которую импортируется дамп.

Например:

cat /home/user/backups/dump.sql | psql -h localhost -U tmweb new_db

Подключение к серверу баз данных

Итак, утилита psql позволяет вам управлять сервером баз данных PostgreSQL. Но вначале нужно подключиться к серверу. Подключиться с помощью этой утилиты вы можете к локально установленному серверу, или удалённому используя сеть. Подключение выполняется таким способом:

$ psql -d <база> -U <роль> -h <узел> -p <порт>

По умолчанию при подключении вы используете:

  • в качестве имени базы и роли – имя пользователя ОС;
  • в качестве адреса сервера – локальный сокет, который находится в каталоге /tmp/ и порт 5432.

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

$ psql
$ psql -d postgres -U postgres -h /tmp/ -p 5432

Для получения информации о узле к которому вы подключены используется команда \conninfo:

postgres@s-pg13:~$ psql
psql (13.3)
Type "help" for help.

postgres=# \conninfo
You are connected to database "postgres" as user "postgres" via socket in "/tmp" at port "5432".

postgres=# \q

postgres@s-pg13:~$ psql -d postgres -U postgres -h /tmp -p 5432
psql (13.3)
Type "help" for help.

postgres=# \conninfo
You are connected to database "postgres" as user "postgres" via socket in "/tmp" at port "5432".

postgres=# \q

Не выходя из терминала psql вы можете подключится к другому узлу с помощью команды .

Все команды psql начинаются с символа обратного слеша “\”. Но помимо этих команд можно выполнять запросы SQL, для них обратный слеш не нужен, например SELECT.

Чтобы выйти из терминала psql можно использовать 2 равносильные команды и .

Описание таблицы

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

Для описания таблицы используется команда \d

\d booking_sites

Table «public.booking_sites»
Column | Type | Collation | Nullable | Default
—————-+————————+————+———-+——————————————-
id | bigint | | not null | nextval(‘booking_sites_id_seq’::regclass)
company_name | character varying(50) | | not null |
origin_country | character varying(50) | | not null |
age | character varying(3) | | not null |
date_of_birth | date | | not null |
website_url | character varying(50) | | |
Indexes:
«booking_sites_pkey» PRIMARY KEY, btree (id)

Возможные ошибки

Input file appears to be a text format dump. please use psql.

Причина: дамп сделан в текстовом формате, поэтому нельзя использовать утилиту pg_restore.

Решение: восстановить данные можно командой psql <имя базы> < <файл с дампом> или выполнив SQL, открыв файл, скопировав его содержимое и вставив в SQL-редактор.

No matching tables were found

Причина: Таблица, для которой создается дамп не существует. Утилита pg_dump чувствительна к лишним пробелам, порядку ключей и регистру.

Решение: проверьте, что правильно написано название таблицы и нет лишних пробелов.

Причина: Утилита pg_dump чувствительна к лишним пробелам.

Решение: проверьте, что нет лишних пробелов.

Aborting because of server version mismatch

Причина: несовместимая версия сервера и утилиты pg_dump. Может возникнуть после обновления или при выполнении резервного копирования с удаленной консоли.

Решение: нужная версия утилиты хранится в каталоге /usr/lib/postgresql/<version>/bin/. Необходимо найти нужный каталог, если их несколько и запускать нужную версию. При отсутствии последней, установить.

No password supplied

Причина: нет системной переменной PGPASSWORD или она пустая.

Решение: либо настройте сервер для предоставление доступа без пароля в файле pg_hba.conf либо экспортируйте переменную PGPASSWORD (export PGPASSWORD или set PGPASSWORD).

Неверная команда \

Причина: при выполнении восстановления возникла ошибка, которую СУБД не показывает при стандартных параметрах восстановления.

Решение: запускаем восстановление с опцией -v ON_ERROR_STOP=1, например:

psql -v ON_ERROR_STOP=1 users < /tmp/users.dump

Теперь, когда возникнет ошибка, система прекратит выполнять операцию и выведет сообщение на экран.

Специальные схемы, временные объекты

К специальным схемам относят:

  • public – по умолчанию входит в путь поиска, если ничего не менять, все объекты будут в этой схеме.
  • Схема, одноимённая с пользователем – по умолчанию входит в search_path, но не существует. Если сделать, например схему postgres, то пользователь postgres будет по умолчанию работать с этой схемой.
  • pg_catalog – схема для объектов системного каталога. Если pg_catalog не прописан, то это схема будет там подразумеваться первой.

Временные таблицы – существуют на время сеанса или транзакции. Они не журналируются и не попадают в общую память. Чтобы реализовать временную таблицу в postgres применяет временные схемы.

Схема pg_temp_N – автоматически создается для временных таблиц. Такая схема тоже по умолчанию находится в search_path. По окончанию все объекты временной схемы удаляются, а сама схема остается. Оставшаяся временная схема может использоваться для новых временных таблиц, новой транзакции или сеанса.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector