見出し画像

[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.

この記事が気に入ったらサポートをしてみませんか?