Skip to content

新环境日志被 sys_setting 'no such table' ERROR 刷屏:本地化读取先于建表,真错误被噪音淹没 #10221

Description

@os-zhuang

现象(P2:新环境日志被 sys_setting "no such table" 刷屏)

2026-08-20 cloud 本地 rig(objectstack 4389fe932),新种子环境的 objectos.log 反复打印(几分钟内数十条):

[sql-driver] DATABASE_ERROR — the backend refused a read on 'sys_setting' (SQLITE_ERROR).
… select * from `sys_setting` where `namespace` = 'localization' and `key` in
('timezone', 'locale', 'currency') and `scope` = 'tenant' limit 10 - no such table: sys_setting

本地化设置读取发生在 sys_setting 表被创建/迁移之前(或该环境根本不会建这张表),每个请求都撞一次,ERROR 级刷屏。

影响

  • 功能上大概率无害(读不到就回退默认 locale),但 ERROR 级噪音会淹没真实错误——本次测试里真正致命的 publishPackageDrafts rolled back 行就淹在它中间;
  • 每请求一次全失败查询也是白花的 IO。

修复建议

三选一:

  1. 本地化读取前探测表存在(或捕获 no-such-table 降级为一次性的 INFO);
  2. 把 sys_setting 建表纳入环境首次引导迁移;
  3. 读取结果(包括"表不存在")做进程内缓存,别每请求重试。

复现

新建环境(不带任何 setting 写入),任意带 kernel 的请求即触发。

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions