修复内容: 1. Collection 模型唯一约束逻辑错误 - 修改约束从 (user_id, site_id, folder_id) 到 (user_id, site_id) - 防止用户多次收藏同一网站 2. 用户注册重复提交数据库 - 优化为只提交一次数据库操作 - 提升注册性能 3. JavaScript 未使用的变量 - 删除 updateCollectButton() 中未使用的 icon 变量 4. 文件夹计数逻辑缺失 - 为每个文件夹添加收藏数量计算 - 修复收藏列表页面显示 5. JavaScript 错误处理不完善 - 所有 fetch 调用添加 HTTP 状态码检查 - 改进网络错误提示 新增文件: - fix_collection_constraint.py - 数据库约束修复脚本 - BUGFIX_v3.0.1.md - 详细修复记录 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
"""
|
||
数据库修复脚本:修复 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()
|