본문 바로가기
오류 해결 및 팁

[Django] mysqlclient 설치부터 migrate 에러까지

by sweji 2020. 5. 21.

장고 공부하면서 mysql 연습 중 mysqlclient 설치부터 migrate 하는 것 까지 에러가 나와 몇시간을 헤맸어서
여기에 기록해둔다.

Mysqlclient 설치

먼저 기본으로 sqlite3가 되어 있지만, 다른 데이터베이스를 이 프로젝트와 연동하고 싶은 사람들이 있을 것이다.
그래서 settings.py 파일의 DATABASES = {} 이부분을 수정하면서 원하는 DB로 바꿀 텐데,
나는 mysql 로 하였다.

mysql 로 바꿨으니 그에 맞는 파이썬 드라이버를 설치해줘야 한다.
현재 필자는 python 3.8 버전을 사용중이기 때문에
mysqlclient 패키지를 설치하려고 했다. 참고] https://jamanbbo.tistory.com/28

그런데 참고에서도 마찬가지로 아래와 같은 수많은 빨간 에러를 접하고..

pip 버전을 일단 업그레이드 한 후, 구글링한 결과, 바이너리 파일을 직접 다운 받아 설치했다.
아래 링크에서 자기 파이썬 버전에 맞는 파일을 다운받자.
잘못 다운받아서 아래 사진과 같은 경우가 될 수 있다.(필자의 경우 2번 잘못 다운받았다)
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient

설치 방법> pip install "다운받은 파일의 경로" 

성공시 출력되는 내용
실패하면 출력되는 내용. 버전에 맞는거 찾아서 다시 다운받을 것!!

Migrate 에러

무사히 mysqlclient를 설치했기 때문에,
python manage.py migrate 하여 데이터베이스 설치를 완료하려 했으나
2차로 출력되는 수많은 에러들...

migrate 에러 내용. OperationalError:(2059,<NULL>)

그 이유는, mysql이 버전들이 업데이트 되면서,
최신버전은 회원 생성시 sha로 암호화되어 settings.py의 DB에 입력한 user의 값들과 다르다고 한다.
참고] https://yoshinari.tistory.com/31
그래서 mysql shell에서 회원을 새로 생성하고 그 회원으로 연결해주면 된다.

mysql shell에서 회원 생성. workbench에서 해도 됨.

이제 migrate를 시도해보면 문제없이 수행됨을 알 수 있다.

migrate 성공시 화면에 출력되는 내용
migrate로 없었던 table들이 생성된 것을 workbench를 통해 확인가능

기존에 sqlite3에 생성해둔 admin 정보들은 DB 변경으로 인해 초기화 되었다는 사실을 알아두도록 하자.

댓글