Удалить базу данных, к которой обращаются другие пользователи?

Я пытаюсь удалить базу данных из PgAdmin 3, и я получаю это сообщение об ошибке:

ERROR: can't delete current database
SQL state: 55006

Как я могу заставить удалить / исправить эту ошибку, из этой базы данных?

7 ответов

Решение

Быстрое исправление в PgAdmin: просто создайте еще одну пустую базу данных. Выберите это. Удалить первый. Вуаля.

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

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

Этот пост Лиладхарана Ачара помог мне в работе с этой ошибкой.

По сути, это сводится к следующему:

SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'target_db'
  AND pid <> pg_backend_pid();

DROP DATABASE 'target_db';

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

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

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

Самое простое и, возможно, самое аккуратное решение — перейти к службам и остановить сервер PostgreSQL, а затем запустить его, а затем запуститьdrop database yourdbname;команда снова. Это должно отключить любые сеансы и позволить вам удалить текущую базу данных.

Лучший способ удалить пользователя указан ниже

Как у меня есть имя пользователя "X", и у него есть разрешение на доступ к имени базы данных: "Test" . И теперь мы создали соединение с базой данных "Тест"

Если мы попытаемся: удалить пользователя "X", это будет определением, показанным ниже указанной ошибки:

ОШИБКА: пользователь "X" не может быть удален, потому что пользователь имеет привилегию на некоторый объект. Состояние SQL =55006

Прежде всего, соединение не должно быть создано с помощью "Test" db.because, которое оно использует в настоящее время, поэтому мы не можем удалить пользователя. создать соединение с любой базой данных, кроме, например, "Тест". Теперь снова попробуйте удалить пользовательский тест. Он должен работать нормально на моей стороне, дайте мне знать, если вы столкнулись с проблемой на вашей стороне

Другие вопросы по тегам