From f9ba200638cab3298e9a8d4336eb45dd8959efd6 Mon Sep 17 00:00:00 2001 From: OG T Date: Wed, 15 Apr 2026 19:37:58 +0800 Subject: [PATCH] =?UTF-8?q?fix(db):=20Phase=206=20migration=20=E4=B8=89?= =?UTF-8?q?=E6=A2=9D=20CREATE=20INDEX=20=E6=8B=86=E9=96=8B=E5=90=84?= =?UTF-8?q?=E8=87=AA=20execute?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit asyncpg 不支援 prepared statement 內多條 SQL 指令, 原本一個 text("""...""") 包含三條 CREATE INDEX 導致 CrashLoopBackOff。 拆成三個獨立 conn.execute() 呼叫。 2026-04-15 ogt + Claude Sonnet 4.6(亞太) Co-Authored-By: Claude Sonnet 4.6 --- apps/api/src/db/base.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/apps/api/src/db/base.py b/apps/api/src/db/base.py index 3aa243e7..c3ab124c 100644 --- a/apps/api/src/db/base.py +++ b/apps/api/src/db/base.py @@ -222,17 +222,19 @@ async def init_db() -> None: # 2026-04-15 ogt + Claude Sonnet 4.6(亞太): Phase 6 自我治理閉環 # ADR-087: ai_governance_events 不可變 Event Sourcing 表 - # create_all 已建表,此處補 INDEX(部分環境 create 不跑 Index) - await conn.execute( - text(""" - CREATE INDEX IF NOT EXISTS ix_ai_governance_event_type - ON ai_governance_events (event_type); - CREATE INDEX IF NOT EXISTS ix_ai_governance_triggered_at - ON ai_governance_events (triggered_at); - CREATE INDEX IF NOT EXISTS ix_ai_governance_resolved - ON ai_governance_events (resolved); - """) - ) + # asyncpg 不允許 prepared statement 內多條指令,必須分開 execute + await conn.execute(text( + "CREATE INDEX IF NOT EXISTS ix_ai_governance_event_type " + "ON ai_governance_events (event_type);" + )) + await conn.execute(text( + "CREATE INDEX IF NOT EXISTS ix_ai_governance_triggered_at " + "ON ai_governance_events (triggered_at);" + )) + await conn.execute(text( + "CREATE INDEX IF NOT EXISTS ix_ai_governance_resolved " + "ON ai_governance_events (resolved);" + )) async def close_db() -> None: