MeWrite Docs

OperationalError: no such table

Djangoでデータベースにテーブルが存在しない場合に発生

概要

OperationalError: no such tableは、Djangoでまだ作成されていないテーブルにアクセスしようとした場合に発生します。

エラーメッセージ

django.db.utils.OperationalError: no such table: app_model

原因

  1. マイグレーション未実行: テーブルが作成されていない
  2. マイグレーション未作成: モデル変更後にmakemigrationsしていない
  3. データベースファイルの問題: SQLiteファイルが見つからない
  4. 接続先の間違い: 別のデータベースに接続

解決策

1. マイグレーションを作成・実行

1
2
3
4
5
# マイグレーションファイルを作成
python manage.py makemigrations

# マイグレーションを実行
python manage.py migrate

2. アプリ固有のマイグレーション

1
2
python manage.py makemigrations app_name
python manage.py migrate app_name

3. マイグレーション状態を確認

1
2
3
4
5
# 適用済みマイグレーション一覧
python manage.py showmigrations

# 未適用を表示
python manage.py showmigrations --plan

4. データベースをリセット(開発時のみ)

1
2
3
# SQLiteの場合
rm db.sqlite3
python manage.py migrate

5. 設定を確認

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

# PostgreSQLの場合
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydb',
        'USER': 'user',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

6. INSTALLED_APPSにアプリを追加

1
2
3
4
5
# settings.py
INSTALLED_APPS = [
    # ...
    'myapp',  # 追加を忘れずに
]

7. マイグレーションをやり直す

1
2
3
4
5
6
# マイグレーションファイルを削除
rm myapp/migrations/0*.py

# 再作成
python manage.py makemigrations myapp
python manage.py migrate

Django の他のエラー

最終更新: 2025-12-09