django本番環境でデータベースをテスト用から正式用に変更しようとした時に、変更前のデータベースがマイグレートされる不具合起きて苦戦したため、備忘録を載せます。
自分の場合、設定関連は本来のsetting.pyではなく、
settingsディレクトリを作成して、その中に"base.py"、"local.py"、"production.py"と
ファイル作り、ローカルや本番ごとに設定を分ける方式を採用していました。
これが原因なのかは、わかりませんが最終的にこれに関係しそうなところを触ると治ったため
関係があるかもしれません。
前提条件
・settingsディレクトリの中に"base.py"、"local.py"、"production.py"を作る方式にしている
・database関連の設定を.envから読み込むようにしている
解決方法
①gunicorn.serviceに下記を追記
[Service]
#他の設定省略
#Djangoが使用する設定モジュールを指定
Environment="DJANGO_SETTINGS_MODULE=(プロジェクト名).settings.production"
②仮想環境をアクティベートした状態で下記を実行
export DJANGO_SETTINGS_MODULE="(プロジェクト名).settings.production"
これが重要のようです。sshで接続したセッションが古い(またはデフォルトの)設定を読み込んでしまっていて変更後の.envの設定が反映されていなかった。このコマンドで強制的に設定を上書きするようなイメージです。