8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DjangoでProgrammingError: (1146, "Table '<テーブル名>' doesn't exist")が発生したら

Last updated at Posted at 2020-09-02

はじめに

バックエンドエンジニアを目指してPython等を勉強中の初心者です。
Qiitaは初投稿となります。

今回、作成したDjangoアプリをAWS EC2にデプロイする過程でタイトルのエラーが発生しました。原因が中々わからず苦労したので、解決方法を書き残しておきます。

環境

  • Amazon Linux 2(64bit)
  • Apache2.4.43
  • MySQL8.0.21
  • Python3.7.8
  • Django3.1

エラー内容

ApacheやMySQLの設定を終え、Djangoのmigraionを実行した後、ブラウザからEC2のパブリックIPアドレスにアクセスすると次のようなエラーが表示されました。

Django.db.utils.ProgrammingError: (1146, "Table '<テーブル名>' doesn't exist")

文字通りテーブルが存在しないよーというエラーです。

ローカルでSQLite3を使っていたときはうまくいっていたので、サーバ内のMySQLの設定がおかしいのかと思い色々いじってみたがうまく行かず…

そこでDjangoのアプリ構成をもう一度よく見返してみると、作成されているはずのmigrationファイルが存在しないことに気づきました。migrationがうまく行われていないようです。

原因と解決法

今回デプロイしたDjangoプロジェクトは1プロジェクトの下に2つアプリという構成でした。

その場合はどうやらpython3 manage.py makemigraions <アプリ名>のようにアプリ名を指定しないと、正しくmigrationが実行されないことがあるようです。

そこで今度は

python3 manage.py makemigraions <アプリ名>
python3 manage.py migrate

と実行したところ、テーブルが作成され、上記のエラーが解消しました。

同じような事象に悩まされている方はぜひ試してみてください。

参考

[django model を作成したが、makemigrations で No changes detected になる| Monotalk]
(https://www.monotalk.xyz/blog/django-model-%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E3%81%8Cmakemigrations-%E3%81%A7-no-changes-detected-%E3%81%AB%E3%81%AA%E3%82%8B/)

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?