[장고 에러] NotSupportedError: Mysql 8 or later is required.

소요 시간: 1분

Django 프로젝트를 PythonAnywhere에 업로드한 후 사이트에 접속했더니, 아래와 같은 에러 메시지가 나타났습니다:

MySQL 8 or later is required

이 글에서는 이 에러의 원인을 분석하고, 이를 해결하기 위한 구체적인 방법을 설명합니다.


에러 원인

Django 4.2 이상 버전부터는 MySQL 5.7 버전의 지원이 중단되었습니다. 따라서 Django 버전이 4.2 이상이고 MySQL 버전이 5.7.33 이하일 때 이 에러가 발생합니다. 이 에러는 데이터베이스 버전이 최신 요구사항을 충족하지 못해 발생합니다.


해결 방법

이 문제를 해결하기 위해 두 가지 방법을 고려할 수 있습니다. 첫째, Django의 이전 버전으로 돌아가는 방법이고, 둘째, MySQL 버전을 8 이상으로 업데이트하는 방법입니다.

MySQL 버전 업그레이드

먼저 현재 MySQL의 버전을 확인해야 합니다. 이를 위해 셀에서 MySQL에 접속합니다.

$ mysql.server start
$ sudo mysql -u root

MySQL에 접속한 후 버전을 확인합니다.

mysql> SELECT @@version;
+-----------+
| @@version |
+-----------+
| 5.7.33    |
+-----------+
1 row in set (0.00 sec)

만약 MySQL 버전이 8 이하라면, MySQL을 업그레이드해야 합니다. MySQL 공식 웹사이트에서 최신 버전의 MySQL을 다운로드하고 설치합니다. 설치 과정은 운영체제에 따라 다르므로, 해당 문서를 참고하여 설치를 완료합니다.

Django 다운그레이드

MySQL을 업그레이드할 수 없는 상황이라면, Django를 이전 버전으로 다운그레이드할 수 있습니다. MySQL 5.7 버전을 지원하는 Django 4.1 버전을 설치합니다. 이를 위해 먼저 현재 설치된 Django를 삭제하고, 그 다음 4.1 버전을 설치합니다.

$ pip3 uninstall django
$ pip3 install django==4.1

이 방법은 MySQL을 업그레이드하지 않고도 프로젝트를 실행할 수 있게 해주지만, 최신 버전의 Django 기능을 사용할 수 없게 됩니다.


결론

Django 4.2 이상 버전과 MySQL 5.7 버전의 호환성 문제로 인해 발생하는 NotSupportedError: MySQL 8 or later is required 에러는 두 가지 방법으로 해결할 수 있습니다. MySQL 버전을 8 이상으로 업그레이드하거나, Django를 이전 버전으로 다운그레이드하는 것입니다. 각 방법은 장단점이 있으므로 상황에 맞게 선택하시기 바랍니다.

이 글이 PythonAnywhere에서 Django 프로젝트를 관리하는 데 있어 도움이 되길 바랍니다. 에러를 해결하고 프로젝트를 성공적으로 운영하시길 바랍니다.

장고 리스트