Upuść bazę danych postgresql przez wiersz poleceń [zamknięty]
Próbuję upuścić bazę danych i utworzyć nową za pomocą wiersza poleceń. Loguję się za pomocą PSQL-U username, a następnie wykonuję \connect template1, a następnie DROP DATABASE databasename;
Pojawia się błąd "nazwa bazy danych jest dostępna dla innych użytkowników". Wyłączyłem Apache i próbowałem tego i nadal dostaję ten błąd. Czy robię coś nie tak?
4 answers
Możesz uruchomić polecenie dropdb z linii poleceń:
dropdb 'database name'
Zauważ, że musisz być superużytkownikiem lub właścicielem bazy danych, aby móc ją upuścić.
Możesz również sprawdzić Widok pg_stat_activity, aby zobaczyć, jaki rodzaj aktywności ma obecnie miejsce w Twojej bazie danych, w tym wszystkie bezczynne procesy.
SELECT * FROM pg_stat_activity WHERE datname='database name';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-18 14:31:18
To mi pomogło:
select pg_terminate_backend(pid) from pg_stat_activity where datname='YourDatabase';
Dla postgresql wcześniej niż 9.2 zamień pid
na procpid
DROP DATABASE "YourDatabase";
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-22 09:40:08
Spróbuj tego. Zauważ, że nie ma określonej bazy danych-po prostu działa "na serwerze"
psql -U postgres -c "drop database databasename"
Jeśli to nie zadziala, widzialem problem z postgresem trzymajacym sie osieroconych gotowych wypowiedzi.
Aby je wyczyścić, zrób to:
SELECT * FROM pg_prepared_xacts;
Następnie dla każdego identyfikatora, który widzisz, uruchom to:
ROLLBACK PREPARED '<id>';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-16 06:17:52
Kiedy mówi, że użytkownicy są połączeni, co mówi zapytanie " select * from pg_stat_activity;"? Czy inni użytkownicy oprócz ciebie są teraz podłączeni? Jeśli tak, być może będziesz musiał edytować swój pg_hba.plik 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ą upuścić. Mam ten problem od czasu do czasu w produkcji. Ustaw pg_hba.conf aby mieć dwie linie takie jak Ta:
local all all ident
host all all 127.0.0.1/32 reject
I powiedz pgsql, aby przeładował lub zrestartował (tj. albo sudo / etc / init.d / postgresql reload lub pg_ctl reload) i teraz jedynym sposobem na połączenie się z Twoją maszyną są gniazda lokalne. Zakładam, że jesteś na Linuksie. Jeśli nie, może być konieczne dostosowanie do czegoś innego niż local / ident w pierwszej linii, do czegoś takiego jak host ... Twoje imię.
Teraz powinieneś być w stanie zrobić:
psql postgres
drop database mydatabase;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-17 03:10:35