django 에러 모음

BackEnd_Ash.log·2020년 2월 27일
0
SystemCheckError: System check identified some issues:

ERRORS:
account.Address.user: (fields.E303) Reverse query name for 'Address.user' clashes with field name 'User.address'.
        HINT: Rename field 'User.address', or add/change a related_name argument to the definition for field 'Address.user'.
account.User.address: (fields.E303) Reverse query name for 'User.address' clashes with field name 'Address.user'.
        HINT: Rename field 'Address.user', or add/change a related_name argument to the definition for field 'User.address'.

에러가 난다면 충돌이 난것이다.
FK 참조하는것을 유심히 살펴봐라
바라봐야할곳이 아닌데 바라보고 있을 확률이 높다.

You are trying to change the nullable field 'slug' on post to non-nullable without a default; we can't do that
(the database needs something to populate existing rows).
Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
 2) Ignore for now, and let me handle existing rows with NULL myself (e.g. because you added a RunPython or RunSQL
 operation to handle NULL values in a previous data migration)
 3) Quit, and let me add a default in models.py
Select an option:

에러내용이 위와 같이 발생한다면 ,

find . -path "*/migrations/*.py"
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
python manage.py makemigrations
python manage.py migrate

우선적으로 migrations 을 다 지워준다.
그리고 , 만약에 또 안된다면 mysql 데이터를 drop 해준다

File "manage.py", line 16

) from exc

^

SyntaxError: invalid syntax

우선적으로 본인 conda 가 맞는지 확인을 한다.
conda env list == > conda activate "가상환경이름"

IndentationError: expected an indented block

에러가 shell 에서 발생하게 된다. 인덴트 에러니깐 tab 으로 띄어쓰기가 잘못되었는지 확인을 해본다.

_mysql.connection.query(self, query)

django.db.utils.OperationalError: (1824, "Failed to open the referenced table 'users'")

분명 account 라는 앱을 만들고나서 ,
model 추가해주고 views.py 를 작성하고 나서
python manage.py makemigrations
python manage.py migrate 를 해줬는데 위와 같은 에러가 발생한다.

우선적으로 account 라는 녀석을 만들어 놓고
그리고 나서 order , product , review 를 만들었다.
참조하는것이
account 가 있어야 나머지가 참조가 되는거니깐
순서가 그렇게 되긴 하지만 사실상으로 문제가 있는거니깐 참조하는 관계를 고칠필요가 있다.

django.db.utils.OperationalError: (1138, 'Invalid use of NULL value')

에러가 발생한다면 ,

일단 지금 작성한 appname 을 지정해줘서 makemigrations 을 해준다.
ex )
python manage.py makemigrations account
python manage.py migrate account

Error: Permission denied @ apply2files - /usr/local/lib/node_modules/gatsby-cli/node_modules/term-size/vendor/macos/.DS_Store

이 문제를 해결하는 대표적인 방법은 접근하려고 하는 디렉토리에게만 권한을 주는 것이다

Error: Permission denied @ apply2files

만약에 brew install 하다가 에러가났다면 권한 문제이다 .
이러한 에러가 났다면 ,
chmod 777 /usr/local/lib 를 하거나
sudo install -d -o jakdu -g admin /usr/local/lib
를 해본다.

이렇게 해도 에러가 발생을 하게 된다면, 권한에 대한것을 찾아본다 ,.

django 에서 socket 에러가 생긴다면 ,

OSError: Multiple exceptions: [Errno 61] Connect call failed ('::1', 6379, 0, 0), [Errno 61] Connect call failed ('127.0.0.1', 6379)

이러한 에러가 발생한다면 ,

CHANNEL_LAYERS = {
    "default": {
        "CONFIG": {
            "hosts": [('localhost','6379')],
        },
        "BACKEND": "channels_redis.core.RedisChannelLayer",
    },
}

로 바꾸고
pip install channels_redis
pip install asgi_redis
설치를 해준다.

unit test 데이터베이스 한글로 해서 에러나는 경우 ,

my_settings 를 수정해주면 된다 .

DATABASES = {
  'default' : {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': [database 이름],
    'USER': 'root',
    'PASSWORD': [database 암호],
    'HOST': 'localhost',
    'PORT': '3306',
    'OPTIONS': {'charset': 'utf8mb4'},
    'TEST': {
      'CHARSET': 'utf8mb4',
      'COLLATION': 'utf8_general_ci'
    }
  }
}

makemigrations timezone.now

Please enter the default value now, as valid Python
The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now()
>>> datetime.date

django.core.exceptions.ImproperlyConfigured: Requested setting DEBUG, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

라는 에러가 발생하게 된다면
혹시

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'foodly_project.settings')
에서
DJANGO_SETTINGS_MODULE
여기 부분이 소문자로 되어있는지 확인을 해본다.

git fatal: '/Users/jakdu/django_project/snack_mart/.git/index.lock' 파일을 만들 수 없습니다: File exists.

이럴때

rm -f .git/index.lock

로 지워준다.

You are trying to add a non-nullable field '필드명' to post without a default

이럴경우

이러한 글을 볼수 있다.

Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
2) Quit, and let me add a default in models.py

이 오류는 DB, 모델을 수정할 경우에 자주 발생하는데.
기존에 makemigrations 를 통해 존재하는 정보들을 어떻게 수정할 지 정하지 않았기 때문입니다.

즉, 데이터들이 갈 곳을 잃어 버렸다고 표현을 해야할까요
코드상으로 해결하는 방법과 물리적으로 해결하는 방법이있습니다.

  • 코드
    CharField(default = '')
    CharField(null = True)
    default값과 null 을 허용해서 기존의 데이터들을 null 값이나 default 값으로 설정하는 방법이 있구요

  • 물리

물리적으로는 makemigrations 를 할 때마다 0001_initial.py 와 같은 파일이 생겨납니다.

jwt , encode , decode 에러

우선적으로

pip install jwt

설치를 했는지 확인을 한다.
설치가 되어있다면

pip install PyJWT

설치를 했는지도 확인을 한다.

AttributeError: 'str' object has no attribute 'decode'

이러한 에러가 발생한다면 ,

PyJWT 버전일 가능성이 크다.

pip install PyJWT==1.7.1

로 다시 설치를 한다.

profile
꾸준함이란 ... ?

0개의 댓글