事象
コンテナのPythonとDjangoをそれぞれ最新化(2.6.0→3.8.0、1.1→3.0)して、
docker build後にrunserverすると以下のエラーが発生。
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
APサーバ側で使用しているMySQLクライアントがDjangoの要求するバージョンより古いっぽい。
なのでバージョンアップする必要がある。
解決策
djnagoの要件としては既存のPyMySQLではなくmysqlclientが推奨されている。
mysqlclientを導入するにはOS側でmariadb-develパッケージが必要となる。
dnf -y install mariadb-devel pip uninstall PyMySQL pip install mysqlclient
また、setting.pyでpymysqlを使用していた部分を削除
DATABASE変数はPyMySQLと同じものを使用できるため変更不要。
# import pymysql ※コメントアウト # pymysql.install_as_MySQLdb() ※コメントアウト
この状態でrunserverを実行
# python manage.py runserver 0.0.0.0:8000 Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). April 23, 2020 - 14:56:06 Django version 3.0.5, using settings 'myblog.settings' Starting development server at http://0.0.0.0:8000/ Quit the server with CONTROL-C
うまくいった。
無邪気にAP側だけをバージョンアップするのは危険。