source

Postgre를 삭제하는 방법명령줄을 통한 SQL 데이터베이스

nicesource 2023. 5. 9. 22:49
반응형

Postgre를 삭제하는 방법명령줄을 통한 SQL 데이터베이스

데이터베이스를 삭제하고 명령줄을 통해 새 데이터베이스를 작성하려고 합니다.다음을 사용하여 로그인합니다.psql -U username그리고 나서 합니다.\connect template1다음에DROP DATABASE databasename;.

나는 오류를 이해합니다.

다른 사용자가 데이터베이스 데이터베이스 이름에 액세스하는 중

Apache를 종료하고 다시 시도했지만 여전히 오류가 발생합니다.내가 뭘 잘못하고 있나요?

명령줄에서 dropdb 명령을 실행할 수 있습니다.

dropdb 'database name'

삭제하려면 슈퍼 사용자 또는 데이터베이스 소유자여야 합니다.

또한 다음을 확인할 수 있습니다.pg_stat_activity모든 유휴 프로세스를 포함하여 데이터베이스에서 현재 수행 중인 활동 유형을 확인합니다.

SELECT * FROM pg_stat_activity WHERE datname='database name';

참고로 Postgre에서SQL v13을 사용하면 자동으로 사용자 연결을 끊을 수 있습니다.

DROP DATABASE dbname WITH (FORCE);

또는

dropdb -f dbname

이것은 저에게 효과가 있었습니다.

select pg_terminate_backend(pid) from pg_stat_activity where datname='YourDatabase';

postgresql 9.2 이전 버전의 경우 대체pid와 함께procpid

DROP DATABASE "YourDatabase";

http://blog.gahooa.com/2010/11/03/how-to-force-drop-a-postgresql-database-by-killing-off-connection-processes/

이거 먹어봐요.지정된 데이터베이스가 없습니다. 데이터베이스는 "서버에서" 실행됩니다.

psql -U postgres -c "drop database databasename"

만약 그것이 효과가 없다면, 저는 포스트그레스가 고아가 된 준비된 진술을 유지하는 것에 문제가 있는 것을 보았습니다.
이를 정리하려면 다음 작업을 수행합니다.

SELECT * FROM pg_prepared_xacts;

표시되는 모든 ID에 대해 다음을 실행합니다.

ROLLBACK PREPARED '<id>';

사용자가 연결되어 있다고 하면 "select * from pg_stat_activity;"라는 쿼리는 무엇을 의미합니까?당신 이외의 다른 사용자들도 이제 연결되었습니까?그렇다면 다른 사용자의 연결을 거부하도록 pg_hba.conf 파일을 편집하거나 pg 데이터베이스에 액세스하는 모든 앱을 종료해야 삭제할 수 있습니다.생산 과정에서 가끔 이런 문제가 발생합니다.pg_hba.conf를 다음과 같은 두 줄로 설정합니다.

local   all         all                               ident
host    all         all         127.0.0.1/32          reject

그리고 pgsql에 다시 로드하거나 다시 시작하라고 지시합니다(즉, sudo /etc/init.d/postgresql 다시 로드 또는 pg_ctl 다시 로드). 이제 로컬 소켓을 통해 시스템에 연결하는 유일한 방법입니다.당신은 리눅스를 사용하고 있다고 생각합니다.그렇지 않은 경우 첫 번째 줄의 로컬/식별자가 아닌 호스트와 같은 다른 항목으로 수정해야 할 수 있습니다.사용자 이름입니다.

이제 다음을 수행할 수 있습니다.

psql postgres
drop database mydatabase;

언급URL : https://stackoverflow.com/questions/7073773/how-to-drop-postgresql-database-through-command-line

반응형