症状
插入或查询以 invalid input syntax for type integer 或 uuid 之类的错误失败。该字面量无法按该类型解析,常见原因是空字符串或非数值进入数值列,或驱动把文本类型的参数发往更严格的列。批量操作中失败可能只出现在个别行,指向数据而非查询。
诊断
读取错误中的类型与值;用显式 cast 复现;在应用层追踪该字段的来源。
psql -c "insert into t (num) values ('abc')"
根因
提供的值的文本表示无法按列类型解析,数据库在存储前拒绝了该输入。
修复
写入前校验并转换值使其匹配列类型;数值或日期列避免空字符串;在客户端使用正确的参数类型。在上游清洗数据比依赖数据库强制转换更可靠。
验证
重跑插入确认成功,并确认存储值的类型与内容符合预期。存储正确即证明输入已匹配列类型。
常见陷阱
用空串代替 NULL 表示缺失,会在数值日期列直接报错;应按类型语义使用 NULL。