エラー内容と解決方法
Django 2.2 から Django 3.1 にアップグレードしたら以下のエラーが出るようになった。
(前略) File "/usr/local/lib/python3.6/site-packages/django/db/backends/mysql/introspection.py", line 27, in DatabaseIntrospection FIELD_TYPE.JSON: 'JSONField', AttributeError: module 'MySQLdb.constants.FIELD_TYPE' has no attribute 'JSON'
調べたら以下のページが出てきた
エラーを見たら分かるように、 DB 周りのエラーで、 mysqlclient のバージョンを上げたら直るとのこと。
このエラーが出た時、使っていた mysqlclient のバージョンは 1.3.14 だった。
PyPI のページを見ると、 mysqlclient の最新バージョンは 2.0.3 とのことなので、 このバージョンまで上げてみる。
pip uninstall mysqlclient pip install mysqlclient==2.0.3
これで該当のエラーは出なくなった。
このエラーは何か
MySQL 5.7 から、型に JSON というものが増えており、 Django もバージョン3から JSON 型に対応したのだが、 mysqlclient のバージョンが古くて JSON 型に対応していないとこのエラーになる。