Skip to content

[错误报告]: 媒体库刮削记录无法正常插入数据库 #5822

@raycrystal

Description

@raycrystal

确认

  • 我的版本是最新版本,我的版本号与 version 相同。
  • 我已经 issue 中搜索过,确认我的问题没有被提出过。
  • 我已经 Telegram频道 中搜索过,确认我的问题没有被提出过。
  • 我已经修改标题,将标题中的 描述 替换为我遇到的问题。

当前程序版本

v2.12.4

运行环境

Docker

问题类型

主程序运行问题

问题描述

媒体库刮削记录无法正常插入数据库,无论时刮削成功还是失败均无法通过“媒体整理”查看

发生问题时系统日志和配置文件

moviepilot-v2  | ERROR:   [moviepilot] 2026-05-23 02:18:40,590 transfer.py - 第05集【雷利诺龙】雷利诺龙的寻根之旅.mp4 整理任务处理出现错误:(psycopg2.errors.NotNullViolation) null value in column "id" of relation "transferhistory" violates not-null constraint


moviepilot-v2  | DETAIL:  Failing row contains (null, /media/download/电视剧/儿童/土豆逗严肃科普 全集/08..., local, {"path": "/media/download/\u7535\u89c6\u5267/\u513f\u7ae5/\u571f..., /media/drama/国漫/土豆逗严肃科普 第一季 (2022)/Seaso..., local, {"path": "/media/drama/\u56fd\u6f2b/\u571f\u8c46\u9017\u4e25\u80..., link, 电视剧, 国漫, 土豆逗严肃科普 第一季, 2022, 219958, null, null, null, S08, E05, https://image.tmdb.org/t/p/w500/eHfaWnUK2rXRRx645afPJyOOx1S.jpg, null, null, t, null, 2026-05-23 02:18:40, ["/media/download/\u7535\u89c6\u5267/\u513f\u7ae5/\u571f\u8c46\u..., null).
moviepilot-v2  | 

moviepilot-v2  | [SQL: INSERT INTO transferhistory (src, src_storage, src_fileitem, dest, dest_storage, dest_fileitem, mode, type, category, title, year, tmdbid, imdbid, tvdbid, doubanid, seasons, episodes, image, downloader, download_hash, status, errmsg, date, files, episode_group) VALUES (%(src)s, %(src_storage)s, %(src_fileitem)s::JSON, %(dest)s, %(dest_storage)s, %(dest_fileitem)s::JSON, %(mode)s, %(type)s, %(category)s, %(title)s, %(year)s, %(tmdbid)s, %(imdbid)s, %(tvdbid)s, %(doubanid)s, %(seasons)s, %(episodes)s, %(image)s, %(downloader)s, %(download_hash)s, %(status)s, %(errmsg)s, %(date)s, %(files)s::JSON, %(episode_group)s) RETURNING transferhistory.id]
moviepilot-v2  | [parameters: {'src': '/media/download/电视剧/儿童/土豆逗严肃科普 全集/08【完结】怎么办 恐龙来啦/第05集【雷利诺龙】雷利诺龙的寻根之旅.mp4', 'src_storage': 'local', 'src_fileitem': '{"path": "/media/download/\\u7535\\u89c6\\u5267/\\u513f\\u7ae5/\\u571f\\u8c46\\u9
017\\u4e25\\u8083\\u79d1\\u666e \\u5168\\u96c6/08\\u3010\\u5b8c\\u7e ... (544 characters truncated) ... time": 1779455083.7386177, "children": [], "fileid": null, "parent_fileid": null, "thumbnail": null, "pickcode": null, "drive_id": null, "url": null}', 'dest': '/media/drama/国漫/土豆逗严肃科普 第一季 (2022)/Season 8/土豆逗严肃科普 第一季 - S08E05 - 第 5 集.mp4', 'dest_storage': 'local', 'dest_fileitem': '{"path": "/media/drama/\\u56fd\\u6f2b/\\u571f\\u8c46\\u9017\\u4e25\\u8083\\u79d1\\u666e \\u7b2c\\u4e00\\u5b63 (2022)/Season 8/\\u571f\\u8c46\\u9017\\ ... (398 characters truncated) ... time": 1779455083.7386177, "children": [], "fileid": null, "parent_fileid": null, "thumbnail": null, "pickcode": null, "drive_id": null, "url": null}', 'mode': 'link', 'type': '电视剧', 'category': '国漫', 'title': '土豆逗严肃科普 第一季', 'year': '2022', 'tmdbid': 219958, 'imdbid': None, 'tvdbid': None, 'doubanid': None, 'seasons': 'S08', 'episodes': 'E05', 'image': 'https://image.tmdb
.org/t/p/w500/eHfaWnUK2rXRRx645afPJyOOx1S.jpg', 'downloader': None, 'download_hash': None, 'status': True, 'errmsg': None, 'date': '2026-05-23 02:18:40', 'files': '["/media/download/\\u7535\\u89c6\\u5267/\\u513f\\u7ae5/\\u571f\\u8c46\\u9017\\u4e25\\u8083\\u79d1\\u666e \\u5168\\u96c6/08\\u3010\\u5b8c\\u7ed3\\u301 ... (30 characters truncated) ... \\u9f99\\u6765\\u5566/\\u7b2c05\\u96c6\\u3010\\u96f7\\u5229\\u8bfa\\u9f99\\u3011\\u96f7\\u5229\\u8bfa\\u9f99\\u7684\\u5bfb\\u6839\\u4e4b\\u65c5.mp4"]', 'episode_group': None}]
moviepilot-v2  | (Background on this error at: https://sqlalche.me/e/20/gkpj) - Traceback (most recent call last):
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
moviepilot-v2  |     self.dialect.do_execute(


moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute


moviepilot-v2  |     cursor.execute(statement, parameters)


moviepilot-v2  | psycopg2.errors.NotNullViolation: null value in column "id" of relation "transferhistory" violates not-null constraint

moviepilot-v2  | DETAIL:  Failing row contains (null, /media/download/电视剧/儿童/土豆逗严肃科普 全集/08..., local, {"path": "/media/download/\u7535\u89c6\u5267/\u513f\u7ae5/\u571f..., /media/drama/国漫/土豆逗严肃科普 第一季 (2022)/Seaso..., local, {"path": "/media/drama/\u56fd\u6f2b/\u571f\u8c46\u9017\u4e25\u80..., link, 电视剧, 国漫, 土豆逗严肃科普 第一季, 2022, 219958, null, null, null, S08, E05, https://image.tmdb.org/t/p/w500/eHfaWnUK2rXRRx645afPJyOOx1S.jpg, null, null, t, null, 2026-05-23 02:18:40, ["/media/download/\u7535\u89c6\u5267/\u513f\u7ae5/\u571f\u8c46\u..., null).


moviepilot-v2  | 


moviepilot-v2  | 

moviepilot-v2  | The above exception was the direct cause of the following exception:

moviepilot-v2  | 
moviepilot-v2  | Traceback (most recent call last):
moviepilot-v2  |   File "/app/app/chain/transfer.py", line 1435, in __start_transfer
moviepilot-v2  |     state, err_msg = self.__handle_transfer(
moviepilot-v2  |                      ^^^^^^^^^^^^^^^^^^^^^^^
moviepilot-v2  |   File "/app/app/chain/transfer.py", line 1699, in __handle_transfer
moviepilot-v2  |     return callback(task, transferinfo)
moviepilot-v2  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
moviepilot-v2  |   File "/app/app/chain/transfer.py", line 1033, in __default_callback
moviepilot-v2  |     history = transferhis.add_success(
moviepilot-v2  |               ^^^^^^^^^^^^^^^^^^^^^^^^
moviepilot-v2  |   File "/app/app/db/transferhistory_oper.py", line 140, in add_success
moviepilot-v2  |     return self.add_force(
moviepil
ot-v2  |            ^^^^^^^^^^^^^^^
moviepilot-v2  |   File "/app/app/db/transferhistory_oper.py", line 125, in add_force
moviepilot-v2  |     TransferHistory(**kwargs).create(self._db)
moviepilot-v2  |   File "/app/app/db/__init__.py", line 315, in wrapper
moviepilot-v2  |     raise err
moviepilot-v2  |   File "/app/app/db/__init__.py", line 311, in wrapper
moviepilot-v2  |     db.commit()
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2030, in commit
moviepilot-v2  |     trans.commit(_to_root=True)
moviepilot-v2  |   File "<string>", line 2, in commit
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
moviepilot-v2  |     ret_value = fn(self, *arg, **kw)
moviepilot-v2  |                 ^^^^^^^^^^^^^^^^^^^^

moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1311, in commit
moviepilot-v2  |     self._prepare_impl()
moviepilot-v2  |   File "<string>", line 2, in _prepare_impl
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
moviepilot-v2  |     ret_value = fn(self, *arg, **kw)
moviepilot-v2  |                 ^^^^^^^^^^^^^^^^^^^^
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1286, in _prepare_impl
moviepilot-v2  |     self.session.flush()
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4331, in flush
moviepilot-v2  |     self._flush(objects)
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4466, in _flus
h
moviepilot-v2  |     with util.safe_reraise():
moviepilot-v2  |          ^^^^^^^^^^^^^^^^^^^
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 121, in __exit__
moviepilot-v2  |     raise exc_value.with_traceback(exc_tb)
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4427, in _flush
moviepilot-v2  |     flush_context.execute()
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
moviepilot-v2  |     rec.execute(self)
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
moviepilot-v2  |     util.preloaded.orm_persistence.save_obj(
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/persistence.py"
, line 93, in save_obj
moviepilot-v2  |     _emit_insert_statements(
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
moviepilot-v2  |     result = connection.execute(
moviepilot-v2  |              ^^^^^^^^^^^^^^^^^^^
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
moviepilot-v2  |     return meth(
moviepilot-v2  |            ^^^^^
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 527, in _execute_on_connection
moviepilot-v2  |     return connection._execute_clauseelement(
moviepilot-v2  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clau
seelement
moviepilot-v2  |     ret = self._execute_context(
moviepilot-v2  |           ^^^^^^^^^^^^^^^^^^^^^^
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
moviepilot-v2  |     return self._exec_single_context(
moviepilot-v2  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
moviepilot-v2  |     self._handle_dbapi_exception(
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
moviepilot-v2  |     raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
mo
viepilot-v2  |     self.dialect.do_execute(
moviepilot-v2  |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
moviepilot-v2  |     cursor.execute(statement, parameters)
moviepilot-v2  | sqlalchemy.exc.IntegrityError: (psycopg2.errors.NotNullViolation) null value in column "id" of relation "transferhistory" violates not-null constraint
moviepilot-v2  | DETAIL:  Failing row contains (null, /media/download/电视剧/儿童/土豆逗严肃科普 全集/08..., local, {"path": "/media/download/\u7535\u89c6\u5267/\u513f\u7ae5/\u571f..., /media/drama/国漫/土豆逗严肃科普 第一季 (2022)/Seaso..., local, {"path": "/media/drama/\u56fd\u6f2b/\u571f\u8c46\u9017\u4e25\u80..., link, 电视剧, 国漫, 土豆逗严肃科普 第一季, 2022, 219958, null, null, null, S08, E05, https://image.tmdb.org/t/p/w500/eHfaWnUK2rXRRx645afPJyOOx1S.jpg, null, null, t, null, 2026-05-23 02:18:40, ["/media/download/\
u7535\u89c6\u5267/\u513f\u7ae5/\u571f\u8c46\u..., null).
moviepilot-v2  | 
moviepilot-v2  | [SQL: INSERT INTO transferhistory (src, src_storage, src_fileitem, dest, dest_storage, dest_fileitem, mode, type, category, title, year, tmdbid, imdbid, tvdbid, doubanid, seasons, episodes, image, downloader, download_hash, status, errmsg, date, files, episode_group) VALUES (%(src)s, %(src_storage)s, %(src_fileitem)s::JSON, %(dest)s, %(dest_storage)s, %(dest_fileitem)s::JSON, %(mode)s, %(type)s, %(category)s, %(title)s, %(year)s, %(tmdbid)s, %(imdbid)s, %(tvdbid)s, %(doubanid)s, %(seasons)s, %(episodes)s, %(image)s, %(downloader)s, %(download_hash)s, %(status)s, %(errmsg)s, %(date)s, %(files)s::JSON, %(episode_group)s) RETURNING transferhistory.id]
moviepilot-v2  | [parameters: {'src': '/media/download/电视剧/儿童/土豆逗严肃科普 全集/08【完结】怎么办 恐龙来啦/第05集【雷利诺龙】雷利诺龙的寻根之旅.mp4', 'src_storage': 'local', 'src_fil
eitem': '{"path": "/media/download/\\u7535\\u89c6\\u5267/\\u513f\\u7ae5/\\u571f\\u8c46\\u9017\\u4e25\\u8083\\u79d1\\u666e \\u5168\\u96c6/08\\u3010\\u5b8c\\u7e ... (544 characters truncated) ... time": 1779455083.7386177, "children": [], "fileid": null, "parent_fileid": null, "thumbnail": null, "pickcode": null, "drive_id": null, "url": null}', 'dest': '/media/drama/国漫/土豆逗严肃科普 第一季 (2022)/Season 8/土豆逗严肃科普 第一季 - S08E05 - 第 5 集.mp4', 'dest_storage': 'local', 'dest_fileitem': '{"path": "/media/drama/\\u56fd\\u6f2b/\\u571f\\u8c46\\u9017\\u4e25\\u8083\\u79d1\\u666e \\u7b2c\\u4e00\\u5b63 (2022)/Season 8/\\u571f\\u8c46\\u9017\\ ... (398 characters truncated) ... time": 1779455083.7386177, "children": [], "fileid": null, "parent_fileid": null, "thumbnail": null, "pickcode": null, "drive_id": null, "url": null}', 'mode': 'link', 'type': '电视剧', 'category': '国漫', 'title': '土豆逗严肃科普 第一季', 'year': '2022', 'tmdbid': 219958, 'imdbid': None, 'tvdbid':
 None, 'doubanid': None, 'seasons': 'S08', 'episodes': 'E05', 'image': 'https://image.tmdb.org/t/p/w500/eHfaWnUK2rXRRx645afPJyOOx1S.jpg', 'downloader': None, 'download_hash': None, 'status': True, 'errmsg': None, 'date': '2026-05-23 02:18:40', 'files': '["/media/download/\\u7535\\u89c6\\u5267/\\u513f\\u7ae5/\\u571f\\u8c46\\u9017\\u4e25\\u8083\\u79d1\\u666e \\u5168\\u96c6/08\\u3010\\u5b8c\\u7ed3\\u301 ... (30 characters truncated) ... \\u9f99\\u6765\\u5566/\\u7b2c05\\u96c6\\u3010\\u96f7\\u5229\\u8bfa\\u9f99\\u3011\\u96f7\\u5229\\u8bfa\\u9f99\\u7684\\u5bfb\\u6839\\u4e4b\\u65c5.mp4"]', 'episode_group': None}]

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions