mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-06-09 09:40:06 +08:00
修复 迁移PG后可能卡启动的问题
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user