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 해준다
우선적으로 본인 conda 가 맞는지 확인을 한다.
conda env list == > conda activate "가상환경이름"
에러가 shell 에서 발생하게 된다. 인덴트 에러니깐 tab 으로 띄어쓰기가 잘못되었는지 확인을 해본다.
분명 account 라는 앱을 만들고나서 ,
model 추가해주고 views.py 를 작성하고 나서
python manage.py makemigrations
python manage.py migrate 를 해줬는데 위와 같은 에러가 발생한다.
우선적으로 account 라는 녀석을 만들어 놓고
그리고 나서 order , product , review 를 만들었다.
참조하는것이
account 가 있어야 나머지가 참조가 되는거니깐
순서가 그렇게 되긴 하지만 사실상으로 문제가 있는거니깐 참조하는 관계를 고칠필요가 있다.
에러가 발생한다면 ,
일단 지금 작성한 appname 을 지정해줘서 makemigrations 을 해준다.
ex )
python manage.py makemigrations account
python manage.py migrate account
이 문제를 해결하는 대표적인 방법은 접근하려고 하는 디렉토리에게만 권한을 주는 것이다
만약에 brew install 하다가 에러가났다면 권한 문제이다 .
이러한 에러가 났다면 ,
chmod 777 /usr/local/lib 를 하거나
sudo install -d -o jakdu -g admin /usr/local/lib
를 해본다.
이렇게 해도 에러가 발생을 하게 된다면, 권한에 대한것을 찾아본다 ,.
이러한 에러가 발생한다면 ,
CHANNEL_LAYERS = {
"default": {
"CONFIG": {
"hosts": [('localhost','6379')],
},
"BACKEND": "channels_redis.core.RedisChannelLayer",
},
}
로 바꾸고
pip install channels_redis
pip install asgi_redis
설치를 해준다.
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'
}
}
}
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
라는 에러가 발생하게 된다면
혹시
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'foodly_project.settings')
에서
DJANGO_SETTINGS_MODULE
여기 부분이 소문자로 되어있는지 확인을 해본다.
이럴때
rm -f .git/index.lock
로 지워준다.
이럴경우
이러한 글을 볼수 있다.
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 와 같은 파일이 생겨납니다.
우선적으로
pip install jwt
설치를 했는지 확인을 한다.
설치가 되어있다면
pip install PyJWT
설치를 했는지도 확인을 한다.
이러한 에러가 발생한다면 ,
PyJWT 버전일 가능성이 크다.
pip install PyJWT==1.7.1
로 다시 설치를 한다.