본문 바로가기
Study/Django

[Django / Postgresql ] 이름의 릴레이션(relation)이 없습니다.

by 까다로운오리 2022. 7. 27.

 

Django의 db를 postgresql로 바꾸기 위해 settings.py 에서 Database의 설정을 바꿔주고,

db.sqlite3을 지운 다음 각 앱에 있는 migrations들을 다 지워주었다. 이후 서버를 켰는데 다음과 같은 에러가 떴다.

 

Django DB설정을 처음 했기에 왜 저런 문제가 발생한 건지 감도 안 잡혔고,  또 makemigrations를 해줘도 아무것도 변경된 게 없다 나오지만, migrate를 하니 

다음과 같이 떴다.

또 snsapp은 앱 이름이고 freepost는 모델 클래스(테이블)인데..? snsapp_freepost 로 릴레이션이 형성되나? 하고 pgadmin을 켜보니 snsapp_freepost라는 테이블 이름은 없었다.. 

열심히 구글링을 하긴 했는데... 사실 아직도 잘 모르겠다. ㅎㅎ.... 

 

 

어쨋든 에러를 고치긴 했는데

에러가 발생한 이유는 바로

앱에 있는 migrations 폴더 자체를 다 지워버려서 발생한 거였다..........

 

해서 요약하면

 

 

 

DB변경을 하고 싶으면

 

1. db.sqlite3를 삭제한다.

2. 각 앱에 있는 migrations 폴더에서 __init__.py 폴더만 남겨두고 전부 다 삭제한다.

3. settings.py에서 db설정 변경은 다음과 같이 한다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': '',
        'USER': '',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '5432',

    }
}