유저삭제를 위해 명령어를 날렸는데 에러 발생하였습니다.
postgres=# drop role 유저명;
오류: 기타 다른 개체들이 이 롤에 의존하고 있어, "유저명" 롤을 삭제할 수 없음
상세정보: 1 개체(데이터베이스: db명 데이터베이스)
https://postgresql.kr/docs/12/sql-droprole.html
위의 pg 문서에는 이렇게 나옵니다.
A role cannot be removed if it is still referenced in any database of the cluster; an error will be raised if so. Before dropping the role, you must drop all the objects it owns (or reassign their ownership) and revoke any privileges the role has been granted on other objects. The REASSIGN OWNED and DROP OWNED commands can be useful for this purpose; see 21.4절 for more discussion.
클러스터의 데이터베이스에서 여전히 참조되는 역할은 제거할 수 없으며, 제거할 경우 오류가 발생합니다. 역할을 삭제하기 전에 해당 역할이 소유한 모든 개체를 삭제(또는 해당 개체의 소유권을 재할당)하고 다른 개체에 대해 해당 역할이 부여된 모든 권한을 취소해야 합니다. 이를 위해서는 소유권 재할당 및 소유권 드롭 명령이 유용합니다.
https://www.postgresql.org/docs/current/sql-drop-owned.html
DROP OWNED is often used to prepare for the removal of one or more roles. Because DROP OWNED only affects the objects in the current database, it is usually necessary to execute this command in each database that contains objects owned by a role that is to be removed.
DROP OWNEND는 종종 하나 이상의 역할 제거를 준비하는 데 사용됩니다. DROP OWNEND는 현재 데이터베이스의 개체에만 영향을 미치기 때문에 제거할 역할이 소유한 개체를 포함하는 각 데이터베이스에서 이 명령을 실행해야 합니다.
원인
해당 데이터베이스에 참조되는 부분이 있어서 삭제가 불가능
해결
해당 데이터베이스로 접속 후에 DROP OWNED BY 유저명 수행하여 의존되는 부분 제거
postgres=# \c db명
접속정보: 데이터베이스="db명", 사용자="postgres".
dbdmrd=# drop owned by 유저명;
DROP OWNED
dbdmrd=# drop role 유저명;
DROP ROLE
끝.
'다른 DBMS > PostgresDB' 카테고리의 다른 글
.pgpass 활용하여 password 입력 없이 접속하기 (0) | 2024.07.30 |
---|---|
[PG16] redhat 8버전에 pg16설치하고 데이터 이관하기 (0) | 2024.07.24 |
[postgresql] 데이터타입 총정리 (0) | 2024.04.02 |
vacuum 과 vacuum full 차이 보기 (pageinspect extention 사용) (0) | 2024.03.31 |
postgres extention contrib 확장팩 설치 (0) | 2024.03.30 |
댓글