157 lines
4.6 KiB
Markdown
157 lines
4.6 KiB
Markdown
|
|
# Migration Reset - 完了報告書
|
|||
|
|
|
|||
|
|
## 実行日時
|
|||
|
|
2025年8月28日 13:33:05 - 13:43:58
|
|||
|
|
|
|||
|
|
## 実行された作業内容
|
|||
|
|
|
|||
|
|
### 1. 問題の特定
|
|||
|
|
- **問題**: Migration 0011_auto_20250827_1459.py が存在しない依存関係 0010_auto_20250827_1510 を参照していた
|
|||
|
|
- **エラー内容**: `NodeNotFoundError: Migration rog.0010_auto_20250827_1510 dependencies reference nonexistent parent node`
|
|||
|
|
|
|||
|
|
### 2. Migrationリセット作業
|
|||
|
|
|
|||
|
|
#### バックアップ作成
|
|||
|
|
- **バックアップディレクトリ**: `rog/migrations_backup_20250828_042950`
|
|||
|
|
- **内容**: 既存の11個のmigrationファイルをバックアップ
|
|||
|
|
|
|||
|
|
#### データベース履歴クリア
|
|||
|
|
- **削除レコード数**: 72件の`django_migrations`レコード
|
|||
|
|
- **対象**: `rog`アプリの全migration履歴
|
|||
|
|
|
|||
|
|
#### 新しいシンプルなMigration作成
|
|||
|
|
- **ファイル**: `rog/migrations/0001_simple_initial.py`
|
|||
|
|
- **内容**: Core modelsのみ (managed=True models)
|
|||
|
|
- `CustomUser`
|
|||
|
|
- `Category`
|
|||
|
|
- `NewEvent`
|
|||
|
|
- `Team`
|
|||
|
|
- `Location`
|
|||
|
|
- `Entry`
|
|||
|
|
|
|||
|
|
### 3. Migration適用結果
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Operations to perform:
|
|||
|
|
Apply all migrations: admin, auth, contenttypes, knox, rog, sessions
|
|||
|
|
Running migrations:
|
|||
|
|
Applying rog.0001_simple_initial... FAKED
|
|||
|
|
Applying admin.0001_initial... FAKED
|
|||
|
|
Applying admin.0002_logentry_remove_auto_add... OK
|
|||
|
|
Applying admin.0003_logentry_add_action_flag_choices... OK
|
|||
|
|
Applying knox.0001_initial... FAKED
|
|||
|
|
Applying knox.0002_auto_20150916_1425... OK
|
|||
|
|
Applying knox.0003_auto_20150916_1526... OK
|
|||
|
|
Applying knox.0004_authtoken_expires... OK
|
|||
|
|
Applying knox.0005_authtoken_token_key... OK
|
|||
|
|
Applying knox.0006_auto_20160818_0932... OK
|
|||
|
|
Applying knox.0007_auto_20190111_0542... OK
|
|||
|
|
Applying knox.0008_remove_authtoken_salt... OK
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 最終状態確認
|
|||
|
|
|
|||
|
|
#### Migration状態
|
|||
|
|
```
|
|||
|
|
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
|
|||
|
|
knox
|
|||
|
|
[X] 0001_initial
|
|||
|
|
[X] 0002_auto_20150916_1425
|
|||
|
|
[X] 0003_auto_20150916_1526
|
|||
|
|
[X] 0004_authtoken_expires
|
|||
|
|
[X] 0005_authtoken_token_key
|
|||
|
|
[X] 0006_auto_20160818_0932
|
|||
|
|
[X] 0007_auto_20190111_0542
|
|||
|
|
[X] 0008_remove_authtoken_salt
|
|||
|
|
rog
|
|||
|
|
[X] 0001_simple_initial
|
|||
|
|
sessions
|
|||
|
|
[X] 0001_initial
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 解決されたポイント
|
|||
|
|
|
|||
|
|
### 1. managed=False modelの除外
|
|||
|
|
- **問題**: 初期migrationに`managed=False`のモデル(GifuAreas、JpnAdminMainPerf、JpnSubPerf)が含まれていた
|
|||
|
|
- **解決**: これらのモデルを除外したクリーンなmigrationを作成
|
|||
|
|
|
|||
|
|
### 2. 依存関係の修正
|
|||
|
|
- **問題**: 存在しないmigrationへの参照
|
|||
|
|
- **解決**: 正しい依存関係でmigrationを再構築
|
|||
|
|
|
|||
|
|
### 3. コアモデルの確立
|
|||
|
|
- **成果**: 最低限必要なモデル構造を確立
|
|||
|
|
- **含有モデル**: ユーザー、イベント、チーム、ロケーション、エントリー
|
|||
|
|
|
|||
|
|
## 作成されたツール
|
|||
|
|
|
|||
|
|
### migration_simple_reset.py
|
|||
|
|
- **目的**: Migration reset作業の自動化
|
|||
|
|
- **機能**:
|
|||
|
|
- バックアップ作成
|
|||
|
|
- Migration履歴クリア
|
|||
|
|
- シンプルなmigration作成
|
|||
|
|
- Migration適用
|
|||
|
|
- 状態確認
|
|||
|
|
|
|||
|
|
### 使用方法
|
|||
|
|
```bash
|
|||
|
|
# 完全なリセット workflow
|
|||
|
|
python migration_simple_reset.py --full
|
|||
|
|
|
|||
|
|
# バックアップのみ
|
|||
|
|
python migration_simple_reset.py --backup-only
|
|||
|
|
|
|||
|
|
# リセットのみ
|
|||
|
|
python migration_simple_reset.py --reset-only
|
|||
|
|
|
|||
|
|
# 適用のみ
|
|||
|
|
python migration_simple_reset.py --apply-only
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 今後の展開
|
|||
|
|
|
|||
|
|
### 1. 追加モデルの段階的追加
|
|||
|
|
- Geographic models(managed=Falseとして適切に)
|
|||
|
|
- 追加機能用のモデル
|
|||
|
|
- 関連テーブル
|
|||
|
|
|
|||
|
|
### 2. データ移行
|
|||
|
|
- 既存データの段階的移行
|
|||
|
|
- 写真データの整合性確保
|
|||
|
|
- GPS記録の移行
|
|||
|
|
|
|||
|
|
### 3. デプロイメント準備
|
|||
|
|
- 本番環境での同様作業
|
|||
|
|
- データベースバックアップ確保
|
|||
|
|
- ロールバック計画
|
|||
|
|
|
|||
|
|
## 結論
|
|||
|
|
|
|||
|
|
**✅ Migration混乱の解決に成功**
|
|||
|
|
- 複雑な依存関係問題を解決
|
|||
|
|
- クリーンなMigration状態を確立
|
|||
|
|
- 今後の追加開発に向けた基盤を整備
|
|||
|
|
- デプロイメント時の混乱要因を除去
|
|||
|
|
|
|||
|
|
**次のステップ**: 必要に応じて追加モデルを段階的に追加し、データ移行を実行
|