You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在pgAdmin 4中使用SQL插入数据时遇布尔与整数类型不匹配错误求助

解决PostgreSQL中"column is of type Boolean but expression is of type integer"插入错误

问题根源

你插入数据时给Boolean类型的列传入了整数(0/1),PostgreSQL默认不会自动把整数隐式转换为布尔值,因此触发该错误。

具体解决方法

  • 直接使用布尔字面量
    在INSERT语句里用TRUE/FALSE或者t/f(大小写不敏感)代替0/1。示例:

    INSERT INTO your_table (bool_column, other_col) VALUES (TRUE, 'test');
    -- 也可用简写形式
    INSERT INTO your_table (bool_column, other_col) VALUES (t, 'test');
    
  • 显式转换整数为布尔值
    如果数据源只能提供整数,可通过CAST()或::操作符强制转换:

    -- 使用CAST函数
    INSERT INTO your_table (bool_column, other_col) VALUES (CAST(1 AS BOOLEAN), 'test');
    -- 使用PostgreSQL特有::操作符
    INSERT INTO your_table (bool_column, other_col) VALUES (0::BOOLEAN, 'test');
    

    注意:PostgreSQL仅支持1转为TRUE、0转为FALSE,其他整数会触发转换错误。

  • 检查插入语句的列值对应关系
    确认INSERT语句的列顺序与值的顺序完全匹配,避免将整数类型的值误传到Boolean列位置。比如:
    错误示例:

    -- 假设表结构为 (id INT, active BOOLEAN),此处将整数传入了active列
    INSERT INTO your_table VALUES (123, 1);
    

    修正后:

    INSERT INTO your_table VALUES (123, TRUE);
    
  • 不推荐:修改数据库参数允许隐式转换
    可调整postgresql.conf中的类型转换参数,但这会破坏数据库的类型安全性,容易引发其他潜在问题,非特殊需求不建议操作。

内容的提问来源于stack exchange,提问作者Kurtis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:35:18