안녕하세요.
오늘은 도커에서 postgresql을 실행시킬 때 나는 오류(에러)에 대해 알아보려고 합니다.
The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
initdb: error: directory "/var/lib/postgresql/data" exists but is not empty If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
- 번역본
데이터베이스 클러스터는 "en_US.utf8" 로케일로 초기화됩니다.
기본 데이터베이스 인코딩은 "UTF8"로 설정되었습니다.
기본 텍스트 검색 구성은 "english"로 설정됩니다.
데이터 페이지 체크섬이 비활성화되었습니다.
initdb: 오류: 디렉토리 "/var/lib/postgresql/data"가 존재하지만 비어 있지 않습니다.
새 데이터베이스 시스템을 생성하려면 "/var/lib/postgresql/data" 디렉토리를 제거하거나
비우거나 다음을 사용하여 initdb를 실행하십시오.
"/var/lib/postgresql/data" 이외의 인수.
이 데이터베이스 시스템에 속한 파일은 "postgres" 사용자가 소유합니다.
이 사용자는 서버 프로세스도 소유해야 합니다.
※ 해당 오류의 문제점
- 해당 오류는 postgresql data위치를 도커 내부에 존재하는"/var/lib/postgresql/data"로 지정했지만 해당 디렉토리에 postgresql 데이터 외에 디렉토리나 파일이 존재할 때 발생하는 오류입니다.
※ 해당 오류의 해결방법
- postgresql data위치를 도커 내부에 존재하는"/var/lib/postgresql/data" 곳에 postgresql data에 해당하는 data를 둬야합니다.
- postgresql data가 다른 위치에 저장이 되어있다면 데이터가 저장되어 있는 곳으로 지정을 해줘야합니다.
- 여기서 말하는 postgresql data란? 아래 그림과 같이 있어야 postgresql data입니다.
e.g) 잘된 예시
/var/lib/postgresql/data/base
and
/var/lib/postgresql/data/pg_hba.conf
e.g) 잘못된 예시
/var/lib/postgresql/data/postgresql
and
/var/lib/postgresql/data/data
이렇게 error directory "/var/lib/postgresql/data" exists but is not empty 오류에 대해 알아보았습니다.
감사합니다.
댓글