Как закрыть postgress из sas
Перейти к содержимому

Как закрыть postgress из sas

  • автор:

Убить сеанс / соединение postgresql

Я попытался закрыть процессы, которые вижу на ps -ef | grep postgres , но это тоже не работает:

24 ответа

Вы можете использовать pg_terminate_backend (), чтобы прервать соединение. Чтобы использовать эту функцию, вы должны быть суперпользователем. Это работает во всех операционных системах одинаково.

Перед выполнением этого запроса вы должны REVOKE привилегии CONNECT, чтобы избежать новых подключений:

Если вы используете Postgres 8.4-9.1, используйте procpid вместо pid

MacOS, если postgresql был установлен с brew:

Сначала проверьте это (убейте сервер, который работает в фоновом режиме)

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

Кажется, это работает для PostgreSQL 9.1:

Взято из gists, найденных здесь и здесь.

Вот модифицированная версия, которая работает как для PostgreSQL 9.1, так и для 9.2.

Если вам нужно отключить сеансы конкретного пользователя, мне помогло это:

Проверьте все текущие подключения:

Предоставьте пользователю роль (не важно):

Может просто перезапустить postgres => sudo service postgresql restart

Со всей информацией о запущенном процессе:

MacOS, если postgresql был установлен с brew :

Более простой и обновленный способ:

  1. Используйте ps -ef | grep postgres , чтобы найти соединение #
  2. sudo kill -9 «#» соединения

Примечание: могут быть идентичные PID. Убийство одного убивает всех.

OSX, Postgres 9.2 (устанавливается с homebrew)

Если ваш datadir находится в другом месте, вы можете узнать, где он находится, проверив вывод ps aux | grep postgres

Я использую следующую задачу rake, чтобы переопределить метод Rails drop_database .

Изменить: это для Postgresql 9.2+

Я РЕШИЛ ДАННЫЙ СПОСОБ:

В моей 64-разрядной версии Windows8 просто restart вставляю службу: postgresql-x64-9.5

У меня была эта проблема, и проблема заключалась в том, что Navicat был подключен к моей локальной базе данных Postgres. Как только я отключил Navicat, проблема исчезла.

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

. который убьет все, к чему обращается пользователь postgres. Избегайте этого на производственной машине, но у вас не должно возникнуть проблем со средой разработки. Перед попыткой перезапуска PostgreSQL после этого очень важно убедиться, что каждый postgres процесс действительно завершен.

Из-за этого сообщения unix.SE я изменился с kill -9 на kill -15 .

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

Закройте postgres и перезапустите его. Просто, но у меня работает каждый раз, в отличие от других команд cli.

Как закрыть postgress из sas

Я попытался закрыть процессы, которые вижу на ps -ef | grep postgres , но это тоже не работает:

24 ответа

Вы можете использовать pg_terminate_backend (), чтобы прервать соединение. Чтобы использовать эту функцию, вы должны быть суперпользователем. Это работает во всех операционных системах одинаково.

Перед выполнением этого запроса вы должны REVOKE привилегии CONNECT, чтобы избежать новых подключений:

Если вы используете Postgres 8.4-9.1, используйте procpid вместо pid

MacOS, если postgresql был установлен с brew:

Сначала проверьте это (убейте сервер, который работает в фоновом режиме)

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

Кажется, это работает для PostgreSQL 9.1:

Взято из gists, найденных здесь и здесь.

Вот модифицированная версия, которая работает как для PostgreSQL 9.1, так и для 9.2.

Если вам нужно отключить сеансы конкретного пользователя, мне помогло это:

Проверьте все текущие подключения:

Предоставьте пользователю роль (не важно):

Может просто перезапустить postgres => sudo service postgresql restart

Со всей информацией о запущенном процессе:

MacOS, если postgresql был установлен с brew :

Более простой и обновленный способ:

  1. Используйте ps -ef | grep postgres , чтобы найти соединение #
  2. sudo kill -9 «#» соединения

Примечание: могут быть идентичные PID. Убийство одного убивает всех.

OSX, Postgres 9.2 (устанавливается с homebrew)

Если ваш datadir находится в другом месте, вы можете узнать, где он находится, проверив вывод ps aux | grep postgres

Я использую следующую задачу rake, чтобы переопределить метод Rails drop_database .

Изменить: это для Postgresql 9.2+

Я РЕШИЛ ДАННЫЙ СПОСОБ:

В моей 64-разрядной версии Windows8 просто restart вставляю службу: postgresql-x64-9.5

У меня была эта проблема, и проблема заключалась в том, что Navicat был подключен к моей локальной базе данных Postgres. Как только я отключил Navicat, проблема исчезла.

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

. который убьет все, к чему обращается пользователь postgres. Избегайте этого на производственной машине, но у вас не должно возникнуть проблем со средой разработки. Перед попыткой перезапуска PostgreSQL после этого очень важно убедиться, что каждый postgres процесс действительно завершен.

Из-за этого сообщения unix.SE я изменился с kill -9 на kill -15 .

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

Закройте postgres и перезапустите его. Просто, но у меня работает каждый раз, в отличие от других команд cli.

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

И только тогда я смог сбросить / сбросить базу данных.

Удаленный сценарий. Но если вы пытаетесь запустить тесты в приложении rails, и вы получаете что-то вроде

«ActiveRecord :: StatementInvalid: PG :: ObjectInUse: ERROR: к базе данных» myapp_test «обращаются другие пользователи. ПОДРОБНЕЕ: существует еще 1 сеанс, использующий базу данных.»

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

Я использую Mac и использую postgres через Postgres.app . Я решил эту проблему, просто закрыв и снова запустив приложение.

Откройте PGadmin, посмотрите, открыта ли какая-либо страница запроса, закройте все страницы запроса и отключите сервер PostgresSQL, подключите его снова и попробуйте удалить / сбросить. Это мне помогло.

Не нужно его бросать. Просто удалите и заново создайте общедоступную схему. В большинстве случаев это дает точно такой же эффект.

Дело:
Не удалось выполнить запрос:

Решение:
а. Отобразите активность статуса запроса следующим образом:

Б. Найдите строку, в которой столбец «Запрос» содержит:

C. В той же строке получить значение столбца PID

D. Выполните эти сценарии:

У меня сработало следующее:

Я использую:
gitlab_edition: «gitlab-ce»
gitlab_version: ’12 .4.0-ce.0.el7 ‘

Определенно, один из приведенных выше ответов дал мне идею решить эту проблему в Windows.

Откройте службы в Windows, найдите службу Postgres и перезапустите ее.

Ответ скрыт в одном из комментариев выше: brew services restart postgresql

How to terminate PostgreSQL sessions

Recently, I have encountered an interesting issue, as I could not perform specific database operations due to unwanted and active sessions using the database. Thus, I will briefly note the solution for further reference.

Prerequisites#

This blog post is based on a Debian Wheezy and PostgreSQL 9.1 version.

I have deliberately written down this information here, as there are some minor differences between PostgreSQL versions, so please be aware of potential differences.

The problem and the solution#

Sometimes you need to terminate connections initiated by badly behaving client application, or just make sure nobody is querying the database during a major update.

The solution is to use pg_stat_activity view to identify and filter active database sessions and then use pg_terminate_backend function to terminate them.

To prevent access during an update process or any other important activity you can simply revoke connect permission for selected database users or alter pg_database system table.

Who is permitted to terminate connections#

Every database role with superuser rights is permitted to terminate database connections.

How to display database sessions#

pg_stat_activity system view provides detailed information about server processes.

Sample output that will be used in the following examples.

How to terminate all connections to the specified database#

Use the following query to terminate all connections to the specified database.

How to terminate all connections tied to a specific user#

Use the following query to terminate connections initiated by a specific user.

How to terminate all connections but not my own#

To terminate every other database connection you can use the process ID attached to the current session.

Alternatively, you can simply use username to filter out permitted connections.

Every example mentioned above can be extended to include more conditions like database name, client name, query, or even client address.

How to cancel a running query#

It is not always desired to abruptly terminate an existing database connection, as you can just cancel running query using the function shown in the following query.

How to prevent users from connecting to the database#
Database connect privilege#

To prevent connections from the specific user revoke the connect privilege for the selected database.

To reverse this process use the GRANT statement.

Use the public keyword to specify every database user.

Database user login privilege#

I did not mention it earlier but you can also use database user login privilege to disallow new connections.

To reverse this modification use the following query.

pg_database system table#

Alternatively, you can alter pg_database system table to disallow new connections to a specific database.

To reverse this process use the following query.

How to use the above-mentioned queries inside a shell script#

Use the postgres user to terminate connections.

Use role with superuser rights to terminate connections.

You can read more about providing password using environment variables in my previous article: How to non interactively provide a password for the PostgreSQL interactive terminal.

как завершить сеансы postgresql 8.3?

Я пытаюсь завершить сеанс (конкретный сеанс или все сеансы, не имеет значения) в postgresql 8.3, и у меня возникают проблемы с этим. Я знаю, что в более новых версиях (8.4 и более поздних) есть команда pg_terminate_backend, которая будет делать трюк, но это невозможно в postgresql 8.3. Если я использую pg_stat_activity, я могу видеть все активные сессии, но не могу их прекратить.

Решение не обязательно должно быть командами sql, но я бы хотел, чтобы он не зависел от используемой ОС (т.е. Команд DOS/UNIX).

Остановка и запуск службы postgres в службах Windows работает отлично, но это подход, специфичный для ОС. Использование ‘pg_ctl restart -D DATA_DIR’ не останавливает службу. Фактически, используя pg_ctl, чтобы попытаться перезапустить службу в то время, когда я пытаюсь это сделать, это вызывает странное поведение. Если есть способ, я могу каким-то образом использовать pg_ctl, чтобы принудительно завершить процесс, как я предполагаю, что окна делают, тогда я, вероятно, смогу использовать это.

В любом случае, я ищу способ прекратить одну или все сессии в postgresql 8.3, которая не является специфичной для платформы. Любая помощь будет замечательной!

Вы можете использовать pg_cancel_backend():

Вы можете использовать это с pg_stat_activity. Например:

Если это не работает, вы можете попробовать следующее:

Это должно быть независимым от ОС. Я не уверен, есть ли какая-то реальная разница в поведении.

Помимо этого вы можете попробовать остановить и запустить сервер, но вы указали на это странное поведение. (Какие?)

Наконец, для конкретного варианта ОС на Linux вы можете, конечно, попробовать использовать команду kill. kill -15 ( SIGTERM ) безопасен; что в основном используется pg_terminate_backend : kill -15 <pid> . kill -9 является умеренно опасным, и вы должны использовать его только в качестве крайней меры.

Убить сеанс / соединение postgresql

Я пытался завершить процессы, которые я вижу, ps -ef | grep postgres но это тоже не работает:

Вы можете использовать pg_terminate_backend (), чтобы убить соединение. Вы должны быть суперпользователем, чтобы использовать эту функцию. Это работает на всех операционных системах одинаково.

Перед выполнением этого запроса вы должны отозвать привилегии CONNECT, чтобы избежать новых подключений:

Если вы используете Postgres 8.4-9.1, используйте procpid вместо pid

Может быть, просто перезагрузить postgres => sudo service postgresql restart

Со всей информацией о запущенном процессе:

MacOS, если postgresql был установлен вместе с brew :

OSX, Postgres 9.2 (устанавливается вместе с homebrew)

Если ваш датадир находится в другом месте, вы можете узнать, где он находится, изучив вывод ps aux | grep postgres

Кажется, это работает для PostgreSQL 9.1:

Снято с гистов, найденных здесь и здесь .

Вот модифицированная версия, которая работает как для PostgreSQL 9.1, так и для 9.2.

Я использую следующую задачу rake, чтобы переопределить drop_database метод Rails .

Редактировать: это для Postgresql 9.2+

Более простой и обновленный способ это:

  1. Используйте, ps -ef | grep postgres чтобы найти соединение
  2. sudo kill -9 «#» связи

Примечание: может быть идентичный PID. Убийство одного убивает всех.

У меня была эта проблема, и проблема была в том, что Navicat был подключен к моей локальной базе данных Postgres. Как только я отключил Navicat, проблема исчезла.

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

. который убьет все, к чему имеет доступ пользователь postgres. Избегайте этого на производственной машине, но у вас не должно быть проблем со средой разработки. Очень важно убедиться, что каждый postgres процесс действительно завершен, прежде чем пытаться перезапустить PostgreSQL после этого.

Как закрыть postgress из sas

Recently, I have encountered an interesting issue, as I could not perform specific database operations due to unwanted and active sessions using the database. Thus, I will briefly note the solution for further reference.

Prerequisites#

This blog post is based on a Debian Wheezy and PostgreSQL 9.1 version.

I have deliberately written down this information here, as there are some minor differences between PostgreSQL versions, so please be aware of potential differences.

The problem and the solution#

Sometimes you need to terminate connections initiated by badly behaving client application, or just make sure nobody is querying the database during a major update.

The solution is to use pg_stat_activity view to identify and filter active database sessions and then use pg_terminate_backend function to terminate them.

To prevent access during an update process or any other important activity you can simply revoke connect permission for selected database users or alter pg_database system table.

Who is permitted to terminate connections#

Every database role with superuser rights is permitted to terminate database connections.

How to display database sessions#

pg_stat_activity system view provides detailed information about server processes.

Sample output that will be used in the following examples.

How to terminate all connections to the specified database#

Use the following query to terminate all connections to the specified database.

How to terminate all connections tied to a specific user#

Use the following query to terminate connections initiated by a specific user.

How to terminate all connections but not my own#

To terminate every other database connection you can use the process ID attached to the current session.

Alternatively, you can simply use username to filter out permitted connections.

Every example mentioned above can be extended to include more conditions like database name, client name, query, or even client address.

How to cancel a running query#

It is not always desired to abruptly terminate an existing database connection, as you can just cancel running query using the function shown in the following query.

How to prevent users from connecting to the database#
Database connect privilege#

To prevent connections from the specific user revoke the connect privilege for the selected database.

To reverse this process use the GRANT statement.

Use the public keyword to specify every database user.

Database user login privilege#

I did not mention it earlier but you can also use database user login privilege to disallow new connections.

To reverse this modification use the following query.

pg_database system table#

Alternatively, you can alter pg_database system table to disallow new connections to a specific database.

To reverse this process use the following query.

How to use the above-mentioned queries inside a shell script#

Use the postgres user to terminate connections.

Use role with superuser rights to terminate connections.

You can read more about providing password using environment variables in my previous article: How to non interactively provide a password for the PostgreSQL interactive terminal.

Убить сеанс / соединение postgresql

Я попытался закрыть процессы, которые вижу на ps -ef | grep postgres , но это тоже не работает:

24 ответа

Вы можете использовать pg_terminate_backend (), чтобы прервать соединение. Чтобы использовать эту функцию, вы должны быть суперпользователем. Это работает во всех операционных системах одинаково.

Перед выполнением этого запроса вы должны REVOKE привилегии CONNECT, чтобы избежать новых подключений:

Если вы используете Postgres 8.4-9.1, используйте procpid вместо pid

MacOS, если postgresql был установлен с brew:

Сначала проверьте это (убейте сервер, который работает в фоновом режиме)

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

Кажется, это работает для PostgreSQL 9.1:

Взято из gists, найденных здесь и здесь.

Вот модифицированная версия, которая работает как для PostgreSQL 9.1, так и для 9.2.

Если вам нужно отключить сеансы конкретного пользователя, мне помогло это:

Проверьте все текущие подключения:

Предоставьте пользователю роль (не важно):

Может просто перезапустить postgres => sudo service postgresql restart

Со всей информацией о запущенном процессе:

MacOS, если postgresql был установлен с brew :

Более простой и обновленный способ:

  1. Используйте ps -ef | grep postgres , чтобы найти соединение #
  2. sudo kill -9 «#» соединения

Примечание: могут быть идентичные PID. Убийство одного убивает всех.

OSX, Postgres 9.2 (устанавливается с homebrew)

Если ваш datadir находится в другом месте, вы можете узнать, где он находится, проверив вывод ps aux | grep postgres

Я использую следующую задачу rake, чтобы переопределить метод Rails drop_database .

Изменить: это для Postgresql 9.2+

Я РЕШИЛ ДАННЫЙ СПОСОБ:

В моей 64-разрядной версии Windows8 просто restart вставляю службу: postgresql-x64-9.5

У меня была эта проблема, и проблема заключалась в том, что Navicat был подключен к моей локальной базе данных Postgres. Как только я отключил Navicat, проблема исчезла.

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

. который убьет все, к чему обращается пользователь postgres. Избегайте этого на производственной машине, но у вас не должно возникнуть проблем со средой разработки. Перед попыткой перезапуска PostgreSQL после этого очень важно убедиться, что каждый postgres процесс действительно завершен.

Из-за этого сообщения unix.SE я изменился с kill -9 на kill -15 .

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

Закройте postgres и перезапустите его. Просто, но у меня работает каждый раз, в отличие от других команд cli.

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

И только тогда я смог сбросить / сбросить базу данных.

Удаленный сценарий. Но если вы пытаетесь запустить тесты в приложении rails, и вы получаете что-то вроде

«ActiveRecord :: StatementInvalid: PG :: ObjectInUse: ERROR: к базе данных» myapp_test «обращаются другие пользователи. ПОДРОБНЕЕ: существует еще 1 сеанс, использующий базу данных.»

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

Я использую Mac и использую postgres через Postgres.app . Я решил эту проблему, просто закрыв и снова запустив приложение.

Откройте PGadmin, посмотрите, открыта ли какая-либо страница запроса, закройте все страницы запроса и отключите сервер PostgresSQL, подключите его снова и попробуйте удалить / сбросить. Это мне помогло.

Не нужно его бросать. Просто удалите и заново создайте общедоступную схему. В большинстве случаев это дает точно такой же эффект.

Дело:
Не удалось выполнить запрос:

Решение:
а. Отобразите активность статуса запроса следующим образом:

Б. Найдите строку, в которой столбец «Запрос» содержит:

C. В той же строке получить значение столбца PID

D. Выполните эти сценарии:

У меня сработало следующее:

Я использую:
gitlab_edition: «gitlab-ce»
gitlab_version: ’12 .4.0-ce.0.el7 ‘

Определенно, один из приведенных выше ответов дал мне идею решить эту проблему в Windows.

Откройте службы в Windows, найдите службу Postgres и перезапустите ее.

Ответ скрыт в одном из комментариев выше: brew services restart postgresql

Как выйти из утилиты командной строки PostgreSQL: psql

Какую команду или короткий ключ я могу использовать для выхода из утилиты командной строки PostgreSQL psql ?

задан 27 фев ’12, 10:02

@a_horse_with_no_name: Меня не шокирует вопрос, а количество голосов за �� Сравните, например, с Как выйти из редактора Vi одним нажатием клавиши? — user272735

Иногда нам нужен быстрый и прямой ответ, чем искать его в руководстве, чтобы сосредоточиться на реальной проблеме. В таких случаях эти короткие вопросы действительно полезны. — App Work

Настоящий вопрос не в «способны ли люди читать руководство», Но «должно ли корпоративное программное обеспечение реагировать на стандартные последовательности выхода» вроде, не знаю, «выход»? Необходимость прочитать руководство, чтобы бросить курить, кажется очень нелогичной. — Kheldar

@Kheldar Действительно, это просто плохой дизайн пользовательского интерфейса (вкупе с высокомерием). Люди не уверены в странных вещах. — Iain Collins

Что еще более важно, этот пост стал первым, когда я гуглил «exit psql» — Angel S. Moreno

8 ответы

Тип \q и затем нажмите ENTER бросить psql .

ОБНОВЛЕНИЕ: 19-ОКТ-2018

По состоянию на PostgreSQL 11, ключевые слова » quit , а также exit «в интерфейс командной строки PostgreSQL были включены, чтобы упростить выход из инструмента командной строки.

ответ дан 19 окт ’18, 13:10

Это не сработает, если вы находитесь в однопользовательском бэкэнд-режиме ( —single ). Вместо этого используйте Ответ Каарел ( Ctrl-D ). Помимо постоянной работы в pgsql, он будет работать в большинстве других ваших оболочек unix (python, mysql и т. Д.). Если вы всегда будете делать что-то «стандартным» способом, ваш мозг будет меньше загроможден мелочами. — варочные панели

Тип \? за помощью, если просто «помощь» не помогает. Это блестящий пример того, как не создавать взаимодействия человека с компьютером. Кто придумал эту прекрасную идею \? для помощи и \ q, чтобы бросить курить? — Джейуокер

Ctrl-d тоже помогает — Молодой

Моя обычная последовательность клавиш:

Я думаю, ветераны командной строки psql обычно сокращают это до:

ответ дан 17 апр.

Я сам пробовал Ctrl-Z. Работа была сделана более или менее, но я не был полностью удовлетворен. �� — Mjwach

cntrl + D для выхода из любого места — Видур Пендж

@mjwach ctrl + z просто приостанавливает процесс в фоновом режиме, что почти наверняка не то, что вы хотите. — LucidObscurity

Посмеялся над твоим ответом. Мозг раздавлен из-за различных инструментов, которые мы используем. — Серджио А.

Я думаю, вы пропустили: q — Алан

Ctrl + D это то, что я обычно использую для выхода из консоли psql.

ответ дан 23 мар ’15, в 06:03

Ага. Это также работает в bash, sh, ssh, zsh, irb, pry, python, sudo su, node и других. это что собой представляет стандартный способ выхода из любого вида оболочки. — Аджеди32

Не просто оболочка. Любая разумная программа, которая читает из стандартного ввода и интерпретирует пустую строку как EOF, примет ^ D. — Кевин

У меня это не работает, вероятно, потому, что я использую раскладку клавиатуры Дворжака в OSX. Ни cmd-D, ни cmd-E (где D находится на Qwerty) не работают. — Нессберд

@NessBird Ctrl — это не то же самое, что Cmd. Попробуйте Control-D вместо Command-D. — Тильман Шмидт

@Kevin, вам не нужно интерпретировать пустую строку как EOF .. по умолчанию отправка ctrl + D заставит вас фактически получить EOF от fgetc () (int = -1), и он закроет поток файла stdin: любой последующий вызов f * read * () вернет ошибку, а feof (stdin) вернет 1. Так что распознать это еще проще �� — разъем

  • Ctrl + Z — это отправляет TSTP сигнал ( TSTP это сокращение от «конечная остановка»)
  • Ctrl + \ — это отправляет QUIT сигнал
  • Ctrl + D — это отправляет EOF характер. EOF означает «конец файла». В этом конкретном случае он выходит из подпрограммы psql, поскольку оболочка ожидает ввода пользователя. Это не должно быть подходящим вариантом, поскольку он не работает, если:
  • перед вводом любого другого символа — попробуйте ввести несколько пробелов и затем нажмите Ctrl + D , он не выйдет из psql.
  • если пользовательский ввод вообще не требуется

ответ дан 02 авг.

Не нужно ничего «пробовать». Правильная команда для чистого выхода psql is хорошо документированы и \q — a_horse_with_no_name

As @хобс четко заявляет о \q : «Это не сработает, если вы находитесь в однопользовательском бэкэнд-режиме (—single). Вместо этого используйте ответ Kaarel ( CtrlD ) «. ИМХО с помощью CtrlD тоже не лучший вариант, и я объяснил почему выше и предложил альтернативу. — страстный

Спасибо! Ctrl+Z была единственной командой, которая сработала для меня — я был подключен к базе данных через туннель, который потерял соединение — ни \q ни Ctrl+D работал, но я мог Ctrl+Z а затем убить приостановленный процесс — Сергей

Вы можете заменить слово «попробовать» словом «использовать» в верхней части этого ответа. Это вызывает чувство «не уверен», но это прямой и рабочий ответ на вопрос. — Гатид

quit or exit or \q

Улучшения пользовательского опыта

Еще одной особенностью, попавшей в эту категорию, была невозможность интуитивно завершить работу из командной строки PostgreSQL (psql). Было зарегистрировано множество жалоб пользователей, пытающихся выйти из выход и выход команд, только чтобы узнать, что команда для этого была \ q.

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

вредные привычки, вредные привычки везде — user4104817

@randomware Не могли бы вы уточнить? — Лукаш Шозда

да, я имею в виду, что обратная косая черта была удовлетворительной и согласовывалась с другими внутренними командами pgsql без точки с запятой, и одна из них могла бы сделать \? or \h продолжить изучение «всего остального» имхо — user4104817

«Было зарегистрировано множество жалоб» -> «обратная косая черта была удовлетворительной»? Хех. — Стив Беннетт

Для командной строки Linux \q + войти.

Как закрыть postgress из sas

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

Запускает так называемое умное выключение. Получив SIGTERM , сервер перестаёт принимать новые подключения, но позволяет всем существующим сеансам закончить работу в штатном режиме. Сервер будет отключён только после завершения всех сеансов. Если сервер находится в режиме архивации, сервер дополнительно ожидает выхода из этого режима. При этом в данном случае сервер позволяет устанавливать новые подключения, но только для суперпользователей (это исключение позволяет суперпользователю подключиться и прервать архивацию). Если получая этот сигнал, сервер находится в процессе восстановления, восстановление и потоковая репликация будут прерваны только после завершения всех обычных сеансов. SIGINT

Запускает быстрое выключение. Сервер запрещает новые подключения и посылает всем работающим серверным процессам сигнал SIGTERM , в результате чего их транзакции прерываются и сами процессы завершаются. Управляющий процесс ждёт, пока будут завершены все эти процессы и затем завершается сам. Если сервер находится в режиме архивации, архивация прерывается, так что архив оказывается неполным. SIGQUIT

Запускает немедленное выключение. Сервер отправляет всем дочерним процессам сигнал SIGQUIT и ждёт их завершения. Если какие-либо из них не завершаются в течение 5 секунд, им посылается SIGKILL . Главный процесс сервера завершается, как только будут завершены все дочерние процессы, не выполняя обычную процедуру остановки БД. В результате при последующем запуске будет запущен процесс восстановления (воспроизведения изменений из журнала). Такой вариант выключения рекомендуется только в экстренных ситуациях.

Удобную возможность отправлять эти сигналы, отключающие сервер, предоставляет программа pg_ctl . Кроме того, в системах, отличных от Windows, соответствующий сигнал можно отправить с помощью команды kill . PID основного процесса postgres можно узнать, воспользовавшись программой ps , либо прочитав файл postmaster.pid в каталоге данных. Например, можно выполнить быстрое выключение так:

Важно

Для выключения сервера не следует использовать сигнал SIGKILL . При таком выключении сервер не сможет освободить разделяемую память и семафоры. Кроме того, при уничтожении главного процесса postgres сигналом SIGKILL , он не успеет передать этот сигнал своим дочерним процессам, так что может потребоваться завершать и их вручную.

Чтобы завершить отдельный сеанс, не прерывая работу других сеансов, воспользуйтесь функцией pg_terminate_backend() (см. Таблицу 9.83) или отправьте сигнал SIGTERM дочернему процессу, обслуживающему этот сеанс.

Как закрыть postgress из sas

Убить сеанс / соединение postgresql

  1. Используйте, ps -ef | grep postgres чтобы найти соединение
  2. sudo kill -9 «#» связи

Как закрыть postgress из sas

Kill a postgresql session/connection

I’ve tried shutting down the processes I see from a ps -ef | grep postgres but this doesn’t work either:

24 Answers 24

Trending sort

Trending sort is based off of the default sorting method — by highest score — but it boosts votes that have happened recently, helping to surface more up-to-date answers.

It falls back to sorting by highest score if no posts are trending.

Switch to Trending sort

You can use pg_terminate_backend() to kill a connection. You have to be superuser to use this function. This works on all operating systems the same.

Before executing this query, you have to REVOKE the CONNECT privileges to avoid new connections:

If you’re using Postgres 8.4-9.1 use procpid instead of pid

Maybe just restart postgres => sudo service postgresql restart

user avatar

With all infos about the running process:

user avatar

MacOS, if postgresql was installed with brew:

OSX, Postgres 9.2 (installed with homebrew)

If your datadir is elsewhere you can find out where it is by examining the output of ps aux | grep postgres

Easier and more updated way is:

  1. Use ps -ef | grep postgres to find the connection #
  2. sudo kill -9 «#» of the connection

Note: There may be identical PID. Killing one kills all.

user avatar

This seems to be working for PostgreSQL 9.1:

Lifted from gists found here and here.

Here’s a modified version that works for both PostgreSQL 9.1 and 9.2.

I use the following rake task to override the Rails drop_database method.

Edit: This is for Postgresql 9.2+

If you need to disconnect sessions of a particular user, this helped me:

Check all current connections:

Grant a role to your user (not important):

I’VE SOLVED THIS WAY:

In my Windows8 64 bit, just restart ing the service: postgresql-x64-9.5

user avatar

MacOS, if postgresql was installed with brew:

firstly check with this (kill server which is running in background)

if you didn’t find pid Then you just need to restart Postgresql service by command which is mention are as under:

user avatar

I had this issue and the problem was that Navicat was connected to my local Postgres db. Once I disconnected Navicat the problem disappeared.

Also, as an absolute last resort you can back up your data then run this command:

. which will kill everything that the postgres user is accessing. Avoid doing this on a production machine but you shouldn’t have a problem with a development environment. It is vital that you ensure every postgres process has really terminated before attempting to restart PostgreSQL after this.

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

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