-
TIL 2023.06.30내일배움캠프 2023. 6. 30. 19:21
루트의 모델이 변경됐는데, 마이그레이션을 하자 이런 에러가 떴다.
ValueError: Cannot alter field routes.Route.spots into routes.Route.spots - they are not compatible types (you cannot alter to or from M2M fields, or add or remove through= on M2M fields)
M2M(Many-to-Many) 관계의 필드에 대해서는 마이그레이션 중에 수정할 수 없다M2M(Many-to-Many) 관계의 필드에 대해서는 마이그레이션 중에 수정할 수 없다고 하는 내용 같다
결국 루트관련 테이블을 삭제하고 다시 마이그레이트 하는 방법을 쓰게 되었다.
로컬에선 SQLite를 사용했는데, 장고 명령어로 디비에 접속해 sql문을 쓸 수 있었다.
python manage.py dbshell
그 후 sql문
DROP TABLE 테이블명
으로 루트 관련 테이블을 전부 삭제했다.
그러고 다시 마이그레이트를 하는데,
sqlite3.OperationalError: no such table: routes_route
테이블이 없다고 한다. 테이블이 생성되지 않는다.
이것도 찾아본 결과
python manage.py migrate --fake APPNAME zero
This will make your migration to fake. Now you can run the migrate script
python manage.py migrate APPNAME
Tables will be created and you solved your problem.. Cheers!!!
라고 스택오버플로우에 써있는 걸 봤다 -> https://stackoverflow.com/questions/35494035/django-migrate-doesnt-create-tables/43677713#43677713
Django migrate : doesn't create tables
After some errors, I dropped my database, deleted all my migration files (I left init.py). Now, when I run python migrate.py makemigrations // It creates migrations correctly python migrate.py
stackoverflow.com
저렇게 해주니 테이블이 생성이 되었다.
이걸 이제 서버에 적용을 시켜야한다.
나는 도커 컨테이너로 생성한 postgesql에 접속을 시도했다.
dbeaver로 말이다
호스트에 우리 도메인
그리고 유저네임 패스워드를 입력하고 테스트연결을 했는데
타임아웃이 떴다.
이건 ec2나 로드밸런서 보안정책을 열어주지 않아서 그런 것!
로드밸런서의 5432포트를 열어주었다.
그랬더니 타임아웃은 해결됐지만
커넥션 리퓨즈가 떴다.
이거는 도커 포스트그레스 컨테이너에서 포트 포워딩을 해주지 않아서 그런 것!
services: postgres: container_name: postgres image: postgres:14.5-alpine ports: - "5432:5432" volumes: - postgres:/var/lib/postgresql/data/ environment: - POSTGRES_USER - POSTGRES_PASSWORD - POSTGRES_DB restart: always
도커 컴포즈.yml에
ports:
- "5432:5432"이 구문을 추가했다.
그러고 튜터님이 ec2 ip로 바로 접속하라고 하셔서
ec2 보안정책에 5432 포트도 열어주고 연결을 다시 시도해보니
연결이 되었다.
그렇게 디비버로 포스트그레스에 연결해서
루트 관련 테이블을 지우고
서버에 변경사항을 적용하고
다시 마이그레이트 해주었다.
기존 루트 데이터는 날려버렸지만
새로 바꾼 모델이 정상 작동해서
기분이 좋다.
'내일배움캠프' 카테고리의 다른 글
TIL 2023.07.05 (0) 2023.07.05 WIL 내일배움캠프 16주차 (0) 2023.06.30 TIL 2023.06.29 (0) 2023.06.29 TIL 2023.06.28 (0) 2023.06.28 TIL 2023.06.27 (0) 2023.06.27