<오늘 한 일/>
- 배포 서버 데이터베이스에 전시 데이터 넣기
- 배포 담당 팀원분이 오전 중에 배포에 성공하셨다. 그런데 우리 프로젝트의 핵심인 전시 데이터가 아직 데이터베이스에 저장되지 않았다고 한다.
- 우리는 머리를 맞대서 주어진 문제를 해결하고자 했다.
- 처음에는 단순하게 manage.py 파일이 있는 프로젝트 루트 폴더에서 아래 명령어를 치면 되지 않을까? 생각을 했다.
python manage.py loaddata exhibitions/utils_data.json
- 모듈이 설치되지 않았다는 에러 메시지가 떴다.
- 배포 담당 팀원과 얘기를 나눈 결과 루트폴더에서 라이브러리를 직접 설치하지는 않았고 Dockerfile에서 명령어를 입력하면 자동으로 실행되는 방식이라고 했다.
- 근데 데이터를 넣기 전에 개발 때 만났던 에러를 생각하면 데이터베이스의 전시 테이블의 몇 필드들의 길이를 조정해야 했던 걸 떠올렸다.
- 그래서 데이터베이스에 접속해서 필드 길이를 바꾸기로 했다.
- 하지만 데이터베이스 접속 명령어를 잘 아는 사람이 없었기 때문에 열심히 서치해가면서 진행했다.
- 너무 많은 명령어들을 이게 될까? 이건 될까? 하면서 입력해서 정리는 못 했지만 대충 기억나는 것들을 정리해 보자면
서버 컴퓨터에서 postgresql 접속하는 명령어
sudo docker exec -it postgres psql -U postgres -W postgres postgres
다시 검색해보니 postgres docker 안에 PSQL 접속하기 라고 한다
사용자 postgres가 데이터베이스 postgres 에 접속하는 명령어
\c postgres
접속한 데이터베이스의 테이블 목록을 확인하는 명령어
\dt
- 기억이 가물가물....
특정 테이블의 상세 정보 조회
\d 테이블명
- 이 명령어로 필드의 길이를 확인했다.
SELECT * FROM 테이블명;
- 이게 어떨 땐 되고 어떨 땐 안 됐는데 아마 세미콜론의 유무였던 것 같다.
- 이 쿼리문으로 전시 테이블에 데이터가 들어왔는지를 확인했다.
SELECT 칼럼명(필드명) FROM 테이블명;
- 데이터가 많아서 테이블이 제대로 안 보일 때는 칼럼을 하나 지정해서 보는 것도 방법이다 * 부분에 칼럼명을 적으면 된다
SELECT count(*) FROM 테이블명;
- 아니면 count(*) 해서 데이터 개수만 확인할 수도 있다
ALTER TABLE exhibitions_exhibition ALTER COLUMN content TYPE VARCHAR (30000);
ALTER TABLE exhibitions_exhibition ALTER COLUMN image TYPE VARCHAR (200);
ALTER TABLE exhibitions_exhibition ALTER COLUMN direct_url TYPE VARCHAR (200);
- 블로그에도 2번인가 적어놨던 데이터베이스에서 접속한 이유!!
- 바로 이 쿼리문을 실행하기 위해서였다.
- 이것도 쿼리문이기 때문에 세미콜론을 붙여줘야 하는데 안 붙여줘서 필드 길이가 제대로 안 바뀌었는데 아무것도 안 뜨길래 바꼈나보다 하고 그냥 데이터베이스 나가서 loaddata 명령어 실행했다가 왜 안 되지 하고 또 헤맸다 ㅋㅋ
- 제대로 실행하고 보니 쿼리문을 실행하면 테이블이 나오든 안내문구가 나오든 하는 것 같다
- 위 명령어를 차례로 입력했는데 입력할 때마다 ALTER TABLE 이라는 문구가 나왔다
- 이제 필드 길이를 바꿨기 때문에 loaddata 하면서 에러는 일어나지 않을 것으로 생각하고 Dockerfile에 loaddata 하는명령어를 넣고 docker 컨테이너를 빌드했다.
- 모든 게 통과되길래 성공한 줄 알았따,,
- 그런데 바뀐 게 없었다
- 데이터베이스에 가보니 전시 데이터가 생성되지 않았다..
- 그래서 이제 어떻게 해야 하나......하는데 다른 팀원분이 도커파일 말고 docker-compose.yml 파일에 그 명령어를 넣어보면 어떠냐 제안하셨다
- yml 파일에서 적당한 위치를 찾았는데 python manage.py migrate 다음에 && 연산자를 붙이고 명령어를 넣으면 되겠다 싶었다
- 그렇게 했더니...!!!!!
- postgresql에 전시 데이터가 제대로 들어갔다!!!!
- 정리하고 보니 간단하지만 오전 11시부터 5시까지의 험난한 여정이었다..(점심시간 제외..~)
- 동행 신청글 프론트엔드 작성/수정/삭제 구현하기
- 이걸 어제 했어야 했는데 채택 기능을 구현해 보려다가 못 했다
- 채택 기능도 못 하고 신청글 프론트엔드도 못 하고,,,,(퇴실체크마저 깜빡했다,,,,어제는 정말,,,,뭐에 씌인 것 같았다)
- 채택 기능의 모델 간의 관계가 너무 어렵고 이해가 잘 안 돼서 구현을 못 했다..좋아요 기능과 같다고 생각했는데 동행 구하기 글의 작성자가 동행 신청하기 댓글을 채택할 수 있어야 하고 근데 동행 신청하기 댓글을 기준으로 하는 게 아니라 작성자를 기준으로 해서 채택된 동행 신청하기 댓글 작성자의 수가 목표인원이 되면 채택 기능이 마감되어야 하고...이걸 한 번에 바로 생각하고 구현하려고 하니까 머리가 아프고 잘 돌아가지 않았다....ㅠㅠ
- 뭐 여튼...! 지금 개발 일정이 늦어진 상태이므로 일단 안 되는 건 제쳐두고 기본적인 거라도 잘하기로 했다!
- 그래서 동행 신청글 프론트엔드 구현을 배포에 성공하자마자 해서 한 ...1시간..반...? 정도 걸려서 구현에 성공한 것 같다.
- 이전의 리뷰 CRUD, 동행 구하기 CRUD랑 로직이 거의 비슷해서 금방 만들 수 있었던 것 같다
- 따로 정리하지는 못 했으므로 PR한 깃허브 주소만 남긴다,,,
- 깔끔하게 한 PR에 작성/수정/삭제 및 에러 해결까지 다 담았다 ㅋㅋㅋ
<느낀 점/>
- 어제, 오늘...주말까지 하면 지금 4일째 알고리즘 문제를 못 풀고 있다... 불안하다....☆
- 그래도 오늘 어느 정도 급한 게 마무리가 된 듯해서 내일 일찍 일어나면 알고리즘 문제 풀 수 있을 것 같다!
- 오늘도 참 수고한 거 같고 왠지 뿌듯하다
- 어제 새벽 3~4시간을 채택기능 고민하다 날려먹어서 그런가 오늘 뭔가 알차게 보낸 거 같아서 좋다 ㅋㅋ
<내일 목표/>
- 배포 시 이미지 URL를 서버에서 읽지 못 하는 것 같다 이것도 팀원들끼리 집단지성을 발휘해서 같이 해결해야 하지 않을까 싶다..! 백엔드 문제인지, 배포 환경 문제인지...알 수가 없으니...
- 9시 이전에 알고리즘 문제 풀기!!