[Lightsail Django]No4 初回マイグレーション
models.pyに自作のテーブルレイアウトを作らない場合でも、migrateコマンドを起動しておく必要があります。Django標準で用意されているテーブルレイアウトがあり、それらを反映させるためです。
(自作のテーブルを作成したい場合はmodels.pyにテーブルレイアウトを定義していきますが、ここでは割愛します。)
当記事は、amazon LightsailにてDjangoを使用したWEBアプリ構築の続きの設定となります。
環境:Lightsail
フレームワーク:Django(Bitnamiにてパッケージ化)
DB:SQLite
プロジェクト名:TEST
アプリ名:APP_TEST
migrateの起動
まずはmigrateを起動しましょう
# アプリ配下のディレクトリに移動
# /opt/bitnami/projects/[プロジェクト名]/[アプリ名]
cd /opt/bitnami/projects/TEST/APP_TEST
# migrateの起動コマンド
python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OK
初回はDjango標準で用意されているマイグレーションファイルが反映される
/opt/bitnami/projects/[プロジェクト名]/[アプリ名]/migrations には、まだマイグレーションファイルが存在しませんが、Django標準で用意されているスクリプト群が反映されます。
このマイグレーションファイルはDjangoのライブラリ内にあるようです。
マイグレーションファイルの反映状況を管理するテーブルが作成される
またdjango_migrationsというテーブルが作成され、どこまでマイグレーションファイルを反映したかを管理します。
showmigrationsで表示される[X]のマークはこのテーブルを参照して表示されます。
# sqliteでテーブルリストを確認
sqlite3 db.sqlite3
SQLite version 3.34.1 2021-01-20 14:10:07
Enter ".help" for usage hints.
sqlite> .table
APP_TEST_blog auth_user
accounts_user auth_user_groups
accounts_user_groups auth_user_user_permissions
accounts_user_user_permissions django_admin_log
auth_group django_content_type
auth_group_permissions django_migrations
auth_permission django_session
# マイグレーションの状況を確認する
python manage.py showmigrations
APP_TEST
[X] 0001_initial
accounts
[X] 0001_initial
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
[X] 0003_logentry_add_action_flag_choices
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
[X] 0009_alter_user_last_name_max_length
[X] 0010_alter_group_name_max_length
[X] 0011_update_proxy_permissions
[X] 0012_alter_user_first_name_max_length
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
sessions
[X] 0001_initial
runserver起動時のログが出なくなる
補足ですが、migrateコマンドを実行していない状態で、runserver起動すると、migrationのワーニングが出ますが、一度migrateコマンドを実行するとこのエラーは表示されなくなります。
python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the
migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
January 29, 2024 - 09:43:52
Django version 4.2.7, using settings 'TEST.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
この記事が気に入ったらサポートをしてみませんか?