Files
zjpb.net/fix_collection_constraint.py
Jowe 7a6fd0c388 fix: v3.0.1 - 修复5个代码问题
修复内容:
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>
2026-02-06 19:27:12 +08:00

49 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
数据库修复脚本:修复 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()