diff --git a/docker-compose.yml b/docker-compose.yml index a9fc779..7860470 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,8 +21,28 @@ services: TZ: Asia/Shanghai # ⚠️ 必须设置这个环境变量,否则 Python 找不到你的脚本 PYTHONPATH: "/app" - DATABASE_URL: "postgresql://litellm_app:shriek-sixfold-ethanol@192.168.1.34:5432/litellm" + # ⚠️ 必须保留 client_encoding=UTF8。 + # 本库 litellm 是 SQL_ASCII 编码(server/client_encoding 均为 SQL_ASCII, + # datcollate=C)。psycopg 对 SQL_ASCII 连接的 TextLoader 直接返回 bytes + # 而非 str(psycopg/types/string.py:110-120),于是 litellm_proxy_extras + # 里 _MIGRATION_TS_RE.match(migration_name)、 + # _TRANSIENT_INDEX_SUFFIX_RE.search(index.name) 等对 bytes 用字符串正则, + # 抛 TypeError: cannot use a string pattern on a bytes-like object。 + # 该参数经 libpq 作为启动参数下发(fe-protocol3.c:2503),使连接按 UTF8 + # 协商;psycopg 读服务端确认值决定解码(pq_ctypes.py:229-232), + # 从而正常返回 str。Prisma 侧无影响:quaint 丢弃未知参数 + # (prisma-engines quaint/src/connector/postgres/url.rs:459), + # 且其驱动 tokio-postgres 本就固定发送 client_encoding=UTF8。 + # 已全库校验:450 个文本列 / 43548 行 / 14.5MB 全部是合法 UTF-8, + # 不存在解码失败风险。 + DATABASE_URL: "postgresql://litellm_app:shriek-sixfold-ethanol@192.168.1.34:5432/litellm?client_encoding=UTF8" STORE_MODEL_IN_DB: "True" + # v2 migration resolver 的额外兜底(可去掉以启用 v2): + # main-latest 自 2026-09-20 起默认启用 v2(上游 commit fac518dbf7), + # v2 会在启动时调用 _warn_if_db_ahead_of_head() —— 即上面那个 TypeError + # 的触发点。上面的 client_encoding 修复已从根因上解除该崩溃, + # 但 v2 还引入迁移协调锁等新机制;保守起见先沿用更新前的 v1 路径。 + USE_V2_MIGRATION_RESOLVER: "false" # --- Modified: 添加 Redis 配置 --- REDIS_HOST: "redis" # 对应下方 redis 服务的名字 REDIS_PORT: "6379"