67 lines
2.5 KiB
Python
67 lines
2.5 KiB
Python
#!/usr/bin/env python
|
|
"""
|
|
マイグレーション履歴リセットスクリプト
|
|
rogアプリのマイグレーション履歴をクリアして、新しいシンプルマイグレーションを適用
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import django
|
|
from django.core.management import execute_from_command_line
|
|
|
|
if __name__ == '__main__':
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
|
|
django.setup()
|
|
|
|
from django.db import connection
|
|
from django.core.management.color import no_style
|
|
|
|
print("=== マイグレーション履歴のクリア ===")
|
|
|
|
# データベース接続を取得
|
|
cursor = connection.cursor()
|
|
|
|
try:
|
|
# rogアプリのマイグレーション履歴をクリア
|
|
print("rogアプリのマイグレーション履歴を削除中...")
|
|
cursor.execute("DELETE FROM django_migrations WHERE app = 'rog';")
|
|
|
|
print("✅ rogアプリのマイグレーション履歴を削除しました")
|
|
|
|
# コミット
|
|
connection.commit()
|
|
|
|
print("\n=== マイグレーション状態確認 ===")
|
|
# マイグレーション状態を確認
|
|
execute_from_command_line(['manage.py', 'showmigrations', 'rog'])
|
|
|
|
print("\n=== 新しいマイグレーションを偽装適用 ===")
|
|
# 依存関係チェックを無視してマイグレーションを偽装適用
|
|
try:
|
|
# まず --run-syncdb で既存のテーブル構造を認識させる
|
|
execute_from_command_line(['manage.py', 'migrate', '--run-syncdb'])
|
|
except Exception as sync_error:
|
|
print(f"syncdb エラー(継続): {sync_error}")
|
|
|
|
# マイグレーション履歴に直接レコードを挿入
|
|
print("マイグレーション履歴を直接挿入中...")
|
|
# 新しいカーソルを作成
|
|
with connection.cursor() as new_cursor:
|
|
new_cursor.execute("""
|
|
INSERT INTO django_migrations (app, name, applied)
|
|
VALUES ('rog', '0001_simple_initial', NOW())
|
|
ON CONFLICT DO NOTHING;
|
|
""")
|
|
connection.commit()
|
|
print("✅ マイグレーション履歴を挿入しました")
|
|
|
|
print("\n=== 最終確認 ===")
|
|
# 最終確認
|
|
execute_from_command_line(['manage.py', 'showmigrations'])
|
|
|
|
except Exception as e:
|
|
print(f"❌ エラーが発生しました: {e}")
|
|
connection.rollback()
|
|
finally:
|
|
cursor.close()
|