Files
zjpb.net/fix_collection_constraint.py

49 lines
1.7 KiB
Python
Raw Normal View History

"""
数据库修复脚本修复 Collection 表的唯一约束
运行方式python fix_collection_constraint.py
"""
import os
from app import create_app
from models import db
def fix_collection_constraint():
"""修复 Collection 表的唯一约束"""
app = create_app(os.getenv('FLASK_ENV', 'development'))
with app.app_context():
print("开始修复 Collection 表的唯一约束...")
try:
# 删除旧的唯一约束
print("1. 删除旧的唯一约束 unique_user_site_folder...")
db.engine.execute(
"ALTER TABLE collections DROP INDEX unique_user_site_folder"
)
print(" ✓ 旧约束已删除")
# 添加新的唯一约束
print("2. 添加新的唯一约束 unique_user_site...")
db.engine.execute(
"ALTER TABLE collections ADD CONSTRAINT unique_user_site UNIQUE (user_id, site_id)"
)
print(" ✓ 新约束已添加")
print("\n✅ 修复完成!")
print("\n说明:")
print("- 旧约束:(user_id, site_id, folder_id) - 允许重复收藏到未分类")
print("- 新约束:(user_id, site_id) - 每个用户只能收藏一次同一个网站")
except Exception as e:
print(f"\n❌ 修复失败: {str(e)}")
print("\n可能的原因:")
print("1. 约束名称不匹配MySQL/SQLite 差异)")
print("2. 数据库中已存在重复数据")
print("3. 数据库权限不足")
import traceback
traceback.print_exc()
if __name__ == '__main__':
fix_collection_constraint()