본문 바로가기

django/오류

docker 오류 잡기(migrations)

이번에도 역시 오류가 많이 났다.

 

  • django.db.migrations.exceptions.NodeNotFoundError: Migration accounts.0001_initial dependencies reference nonexistent parent node ('auth', '0012_alter_user_first_name_max_length')
  • django.db.utils.OperationalError: (1130, Host '172.29.0.3' is not allowed to connect to this MySQL server)

accounts 앱의 migrations 파일의 종속성을 0011_update_proxy_permissions로 수정해주었더니 해결됐다!

특히 아래 오류는 왜 난건지 모르겠다.

다른 사람들은 MySQL 충돌이 났다던가 인바운드 규칙 설정이라던가 해주는데 나는 전부 시도해도 안됐음.

특히 잘되다가 갑자기 안돼서 이유를 모름.

class Migration(migrations.Migration):

    initial = True

# 수정 후
    dependencies = [
        ('auth', '0011_update_proxy_permissions'),
    ]
    
# 수정 전
#    dependencies = [
#        ('auth', '0012_alter_user_first_name_max_length'),
#    ]

 

docker로 MySQL DB를 만들 때 한글 설정을 해주어야 하는 번거로움도 해결했다.

# docker-compose.yml

version: '3'
services:

  db:
    container_name: db
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_HOST: '%'
      MYSQL_ROOT_PASSWORD: mysql
    command: 
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
      - --skip-character-set-client-handshake
    expose:
      - 3306
    ports:
      - "3307:3306"
    env_file:
      - .env
    volumes:
      - dbdata:/var/lib/mysql

command를 추가함.

db가 만들어진 후에 수정하는 방식은 적용이 잘 안된다. 이게 젤 나은듯.

 


docker를 실행할 때 install 과정에서도 오류가 정말 많이 난다.

Django를 최신 버전으로 사용하게 되면(4이상) 오류가 나는 듯. 나는 3.0.8 버전을 주로 사용한다.

asgiref==3.7.2
Django==3.0.8
django-filter==23.5
django-cors-headers==3.11.0
django-environ==0.10.0
djangorestframework==3.14.0
djangorestframework-simplejwt==5.2.2
gunicorn==20.1.0
mysqlclient==2.1.1
PyJWT==2.7.0
pytz==2023.3
sqlparse==0.4.4
tzdata==2023.3

이번에 사용한 모듈.

django-filter==23.5가 django 버전 3.2 이상을 필요로 하는데 알아서 처리 하는듯..? 따로 error는 안뜨고 잘 된다.

 

수정할 때는 image나 volumes 를 꼭 삭제해주자!