Удалить PostgreSql DB из переполнения стека

Есть ли способ написать DROP DATABASE [ IF EXISTS ] name из php скрипта? Кажется, мне нужно что-то похожее на mysql_drop_db только для Postrge.

Как мой $connStr в $conn = pg_connect($connStr) должно выглядеть, чтобы иметь права на эту команду? Какой дБ я должен быть связан?

0

Решение

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

https://www.postgresql.org/docs/current/static/sql-dropdatabase.html

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

  1. Должен pg_terminate_backend(pid) другие соединения на БД, которые вы хотите удалить перед тем, как сбросить:

    select pg_terminate_backend(pid)
    from pg_stat_activity
    where pid <> pg_backend_pid() and datname = 'db_to_drop';

1

Другие решения

Других решений пока нет …