概要
- djangoのデータベースにpostgresqlを使っている
- modelsの変更が複雑になり、migrationsを初期化したい
- 開発環境であれば、現状のデータベースを削除して、再度同じ名前のデータベースを作ったほうが早い
実現したいこと
migrationsの初期化
初期化方法
postgresqlが起動していない場合は下記のコマンドで起動する
sudo service postgresql start
現在のユーザーから postgres ユーザー(PostgreSQLのデフォルト管理者ユーザー)にスイッチし、そのユーザーの環境設定で新しいシェルセッションを開始する。
sudo su - postgres
PostgreSQL データベースに接続する
psql -U postgres
データベースを削除して再度同じ名前でデータベースを作る
※データベースの権限は仕様によって変更する
drop database your_db_name;
create database your_db_name;
grant all privileges on database your_db_name to your_db_user;
データベースの接続(ctrl+D)を解除して、元のユーザーでmakemigrations
およびmigrate
を実行する(migrationsファイルは__init__.py
以外を削除しておく)
python manage.py makemigrations
python manage.py migrate
まとめ
migrationsの削除に関しては履歴の削除などの方法が考えられるが、初期化であればデータベースを1から構築するほうが早い。簡易的な修正であれば、showmigrations
で履歴を確認して、履歴を削除して、migrationsファイルを削除するといった方法を取ることも考えられる。