Fix migration error
This commit is contained in:
66
clear_rog_migrations.py
Normal file
66
clear_rog_migrations.py
Normal file
@ -0,0 +1,66 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user