해결된 질문
작성
·
153
1
친절하게 답변남겨주셔서 다른 문제들은 잘 해결됐습니다^^ css 문제는 nginx.conf의 alias 경로와 docker-compose.yml의 volume 경로가 달라서 그랬더군요...
지금 이게 제일 골치 아픈데 마이그레이트가 제대로 되지 않는 것 같습니다. 슈퍼계정을 만들고 프로필을 만드려고 하면 이런 에러가 나는데 데이터를 삭제하려고 해도 같은 에러가 나고 로그인을 해도 같은 에러가 납니다.
ProgrammingError at /configadmin/profileapp/profile/
(1146, "Table 'django.profileapp_profile' doesn't exist")
Request Method: GET
Request URL: http://158.247.217.144/configadmin/profileapp/profile/
Django Version: 3.2
Exception Type: ProgrammingError
Exception Value:
(1146, "Table 'django.profileapp_profile' doesn't exist")
Exception Location: /usr/local/lib/python3.9/site-packages/MySQLdb/connections.py, line 259, in query
Python Executable: /usr/local/bin/python
Python Version: 3.9.0
Python Path:
['/home/SynapseComponent',
'/usr/local/bin',
'/usr/local/lib/python39.zip',
'/usr/local/lib/python3.9',
'/usr/local/lib/python3.9/lib-dynload',
'/usr/local/lib/python3.9/site-packages']
Server time: Fri, 14 May 2021 10:35:26 +0900
뒤져보니 마이그레이션 문제인 것 같아서 showmigrations 명령으로 상태를 확인해보니 앱 전체가 다 migrations 파일이 존재하지 않는 것 같습니다. 개발 환경에서는 잘 되는데 왜 이럴까요... 아래는 개발환경과 배포환경의 showmigrations 차이입니다. 배포환경에 없는 앱들을 빨간색으로 표시했습니다. 제가 startapp으로 만든 앱들만 마이그레이션에서 빠져 있습니다.
<개발환경>
(venv) C:\Users\webdo\Dropbox\Applications\SynapseComponent>python manage.py showmigrations
accountapp
(no migrations)
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
[X] 0003_logentry_add_action_flag_choices
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
[X] 0009_alter_user_last_name_max_length
[X] 0010_alter_group_name_max_length
[X] 0011_update_proxy_permissions
[X] 0012_alter_user_first_name_max_length
contactapp
(no migrations)
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
django_summernote
[X] 0001_initial
[X] 0002_update-help_text
[X] 0003_alter_attachment_id
informationapp
(no migrations)
profileapp
[X] 0001_initial
[X] 0002_alter_profile_nickname
projectapp
[X] 0001_initial
[X] 0002_project_writer
[X] 0003_project_participants
[X] 0004_alter_project_participants
[X] 0005_alter_project_participants
sessions
[X] 0001_initial
<배포환경>
root@6f5e733a9755:/home/SynapseComponent# python manage.py showmigrations --settings=config.settings.deploy
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
[X] 0003_logentry_add_action_flag_choices
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
[X] 0009_alter_user_last_name_max_length
[X] 0010_alter_group_name_max_length
[X] 0011_update_proxy_permissions
[X] 0012_alter_user_first_name_max_length
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
django_summernote
[X] 0001_initial
[X] 0002_update-help_text
sessions
[X] 0001_initial
민폐끼쳐서 죄송합니다 ㅜㅜ
답변 1
0
안녕하세요 웹도날드님!
질문하시는데 민폐라고 생각하실 필요 없습니다.
개발을 하면서 끝없이 질문을 해야 성장할 수 있으니까요.
그리고 제 강좌 구입해주셨는데 당연히 도움을 드리는게 맞죠.
아무튼 답변을 드리자면,
migration 파일 자체가 git에 업로드 되지 않은 것 같습니다.
혹시 git으로 버전관리를 하시면서, migration 파일들이나 폴더를 gitignore에 설정하셨나요?
github 저장소에서 migration 파일들이 있어야만 배포환경에서
git clone 명령어로 해당 파일들을 기반으로 migrate 작업이 진행됩니다.
그렇기에 migration 파일이 없다면 해당 에러가 나와야 하는 것이 맞습니다.
에러의 내용은
'데이터베이스를 뒤져봤는데, django.profileapp_profile 이라는 테이블이 없던데?'
라는 내용이죠.
말 그대로 profileapp 앱 내부에 설정된 profile 모델을 위한 테이블이 존재하지 않는다는 이야기입니다.
migration 파일은 django 와 데이터베이스를 ORM 기반으로 묶어주는 명세서와 같은 역할을 합니다.
migration 파일이 있어야, 저희가 django 이미지를 만들면서 설정한
python manage.py migrate
명령이 저희가 원하는 대로 구동 될 수 있습니다.
개발 환경에서 migration 파일들을 모두 git add, commit, push 하신 이후,
새로운 버전의 django 이미지를 만드셔서 다시 구동해보시길 바랍니다.
새 django 이미지를 만드실 때 변경된 git 소스가 반영되도록
RUN git clone 앞에 있는
RUN echo 'testing1234'
같이 무의미한 값을 살짝 바꿔주시는것도 잊지 마시구요.
만약 그럼에도 해당 문제가 해결되지 않으신다면,
계속 질문 남겨주시길 바랍니다.
좋은하루 보내세요-
감사합니다 ㅜㅜ 제가 무슨 이유에서인지는 모르겠는데 gitignore에 migrations 폴더를 넣어놨었네요. 지금 생각해보니 도커파일 명령어에 migrate밖에 없는데 마이그레이션 파일이 자동으로 생겼다고 착각했었네요. 사이트가 잘 돌아갑니다. 감사합니다 ㅜㅜ 완강까지 달리겠습니다!