修复 迁移PG后可能卡启动的问题

This commit is contained in:
景大侠
2026-01-24 02:09:52 +08:00
parent 8cf84e722b
commit 08c448ee30

View File

@@ -6,8 +6,9 @@ Create Date: 2026-01-13 13:02:41.614029
""" """
from app.db import ScopedSession from alembic import op
from app.db.models.systemconfig import SystemConfig from sqlalchemy import text
from app.log import logger from app.log import logger
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
@@ -19,22 +20,28 @@ depends_on = None
def upgrade() -> None: def upgrade() -> None:
# systemconfig表 去重 # systemconfig表 去重
with ScopedSession() as db: connection = op.get_bind()
try:
seen_keys = set() select_stmt = text(
# 按ID降序查询以便保留最新的配置 """
for item in db.query(SystemConfig).order_by(SystemConfig.id.desc()).all(): SELECT id, key, value
if item.key in seen_keys: FROM SystemConfig
logger.warn( WHERE id NOT IN (
f"已删除重复的SystemConfig项{item.key} 值:{item.value}" SELECT MAX(id)
) FROM SystemConfig
db.delete(item) GROUP BY key
else: )
seen_keys.add(item.key) """
db.commit() )
except Exception as e: to_delete = connection.execute(select_stmt).fetchall()
logger.error(e) for row in to_delete:
db.rollback() logger.warn(
f"已删除重复的 SystemConfig 项key={row.key}, value={row.value}, id={row.id}"
)
delete_stmt = text(f"DELETE FROM SystemConfig WHERE id = {row.id}")
connection.execute(delete_stmt)
logger.info("SystemConfig 表去重操作已完成。")
def downgrade() -> None: def downgrade() -> None: