From c635dd69f18d89b97d742244b515e1eb22752b1b Mon Sep 17 00:00:00 2001 From: ericwyuan Date: Thu, 20 Aug 2026 02:10:37 +0800 Subject: [PATCH] =?UTF-8?q?fix(db):=20=E7=A9=BA=E5=AD=97=E7=AC=A6=E4=B8=B2?= =?UTF-8?q?datetime=E5=BD=92=E4=B8=80=E5=8C=96=E4=B8=BANULL=EF=BC=8C?= =?UTF-8?q?=E5=85=BC=E5=AE=B9MariaDB=E4=B8=A5=E6=A0=BC=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit monitor_events.event_end_time / event_details.frame_timestamp 收到空串时 插入 NULL 而非 '',避免 1292 Incorrect datetime value 报错 --- fam-core/src/fam_core/db_layer.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/fam-core/src/fam_core/db_layer.py b/fam-core/src/fam_core/db_layer.py index 7a633d1..856d591 100644 --- a/fam-core/src/fam_core/db_layer.py +++ b/fam-core/src/fam_core/db_layer.py @@ -175,6 +175,11 @@ def get_video_url_exists(video_path: str) -> bool: # monitor_events 操作 # ============================================================ +def _dt_or_none(value): + """datetime 字段归一化: 空串/None → NULL(MariaDB 严格模式拒绝 '' 插入 DATETIME 列)""" + return value if value else None + + def insert_event(task_id: int, event_start_time: str, event_end_time: str, camera_name: str, global_summary: str, entities_json: list, compute_provider: list) -> int: @@ -187,7 +192,7 @@ def insert_event(task_id: int, event_start_time: str, event_end_time: str, (task_id, event_start_time, event_end_time, camera_name, global_summary, entities_json, compute_provider) VALUES (%s, %s, %s, %s, %s, %s, %s)""", - (task_id, event_start_time, event_end_time, camera_name, + (task_id, _dt_or_none(event_start_time), _dt_or_none(event_end_time), camera_name, global_summary, json.dumps(entities_json, ensure_ascii=False), json.dumps(compute_provider, ensure_ascii=False)) ) @@ -214,7 +219,7 @@ def insert_event_detail(event_id: int, task_id: int, frame_index: int, (event_id, task_id, frame_index, frame_timestamp, camera_name, person, action, clothing, is_attention_event, source_providers) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""", - (event_id, task_id, frame_index, frame_timestamp, camera_name, + (event_id, task_id, frame_index, _dt_or_none(frame_timestamp), camera_name, person, action, clothing, is_attention_event, json.dumps(source_providers, ensure_ascii=False)) )