PostgreSQL修改Immich数据库system_config表字段值报错求助
正确修改Immich system_config表的SQL命令及错误解析
正确的SQL命令
UPDATE system_config SET value = 'false' WHERE key = 'library.watch.usePolling';
错误原因解析
第一个SQL报错原因
- 在
WHERE条件中写key = library.watch.usePolling时,PostgreSQL会把点号.解析为表与列的关联符号,误以为library是表、watch是关联表、usePolling是列,而非你要匹配的字符串值。必须用单引号'包裹library.watch.usePolling,明确这是一个字符串常量。 - 另外,
value列的类型是character varying(字符串类型),直接写false会被识别为布尔值,虽然PostgreSQL可能做隐式转换,但更规范的写法是用单引号包裹成字符串'false',和现有数据的格式保持一致。
第二个SQL报错原因
- 误用了语法:单独的
SET语句是用来配置数据库参数的,不是更新表数据的语法。更新表必须遵循UPDATE 表名 SET 列=值 WHERE 条件的完整结构,直接写SET "system_config.value" = ...不符合PostgreSQL的UPDATE语法规范,因此触发语法错误。 - 同时,双引号
"在PostgreSQL中用于包裹标识符(如表名、列名),你写的"false"会被数据库当成列名而非字符串值,这也是错误的,字符串值必须用单引号包裹。
内容的提问来源于stack exchange,提问作者rwattstci
相关产品推荐
相关产品推荐

