Próbuję usunąć moją bazę danych i utworzyć nową za pomocą wiersza polecenia.
Loguję się za pomocą, psql -U username
a następnie robię \connect template1
, a następnie DROP DATABASE databasename;
.
Dostaję błąd
baza danych nazwa bazy danych jest dostępna dla innych użytkowników
Zamknąłem Apache i spróbowałem ponownie, ale wciąż pojawia się ten błąd. czy robię coś źle?
database
postgresql
iman453
źródło
źródło
dropdb databasename
polecenie z wiersza poleceń?psql -U <user> -c "drop database protodb"
(bez nazwy bazy danych)drop database <dataabase_name>;
Nie zapomnij o przecinku.Odpowiedzi:
Możesz uruchomić polecenie dropdb z wiersza poleceń:
Pamiętaj, że musisz być superużytkownikiem lub właścicielem bazy danych, aby móc go upuścić.
Możesz także sprawdzić widok pg_stat_activity, aby zobaczyć, jaki rodzaj aktywności ma obecnie miejsce w bazie danych, w tym wszystkie bezczynne procesy.
źródło
dropuser
polecenia, aby usunąć również użytkownika.\l
aby zobaczyć wszystkie bazy danych, które masz.To działało dla mnie:
PostgreSQL 9.2 zastąpić wcześniej niż
pid
zprocpid
http://blog.gahooa.com/2010/11/03/how-to-force-drop-a-postgresql-database-by-killing-off-connection-processes/
źródło
select pg_terminate_backend(pid) from pg_stat_activity where datname='YourDatabase';
column "procpid" does not exist
dla amazon RDS postgres instancja 9.6Spróbuj tego. Uwaga: nie określono bazy danych - po prostu działa ona „na serwerze”
Jeśli to nie zadziała, zauważyłem problem z postgresami trzymającymi się osieroconych przygotowanych wypowiedzi.
Aby je wyczyścić, wykonaj następujące czynności:
następnie dla każdego identyfikatora, który widzisz, uruchom to:
źródło
Kiedy mówi, że użytkownicy są połączeni, co oznacza zapytanie „wybierz * z pg_stat_activity;” mówić? Czy inni użytkownicy oprócz ciebie są teraz połączeni? Jeśli tak, być może będziesz musiał edytować plik pg_hba.conf, aby odrzucić połączenia od innych użytkowników lub zamknąć dowolną aplikację uzyskującą dostęp do bazy danych pg, aby móc ją usunąć. Czasami mam ten problem przy produkcji. Ustaw pg_hba.conf, aby miał dwa takie wiersze:
i powiedz pgsql, aby przeładował lub zrestartował (tj. albo sudo /etc/init.d/postgresql reload lub pg_ctl reload), a teraz jedynym sposobem na połączenie się z maszyną jest użycie lokalnych gniazd. Zakładam, że jesteś na Linuksie. Jeśli nie, może to wymagać dostosowania do czegoś innego niż local / ident w pierwszym wierszu, do czegoś takiego jak host ... twoja nazwa użytkownika.
Teraz powinieneś być w stanie zrobić:
źródło