引起:org.postgresql.util.PSQLException:错误:列“imagesync__c”的类型为布尔值,但表达式的类型为字符变化

Posted

技术标签:

【中文标题】引起:org.postgresql.util.PSQLException:错误:列“imagesync__c”的类型为布尔值,但表达式的类型为字符变化【英文标题】:Caused by: org.postgresql.util.PSQLException: ERROR: column "imagesync__c" is of type boolean but expression is of type character varying 【发布时间】:2020-03-27 13:11:30 【问题描述】:

我正在使用 WSO2 Report Mediator 将记录插入到 postgreSql 表中。面临column "imagesync__c" 是布尔类型但表达式是字符变化类型的问题

仅供参考,

imagesync__c”列的数据类型为 bool 并使用 DBeaver 6.1.2

<property name="syncFlag" scope="default" type="BOOLEAN" value="true"/>
<dbreport description="Insert into product2">
            <connection>
                <pool>
                    <dsName>jdbc/QRSagAppSyncDataSource</dsName>
                </pool>
            </connection>
            <statement>
                <sql><![CDATA[INSERT INTO vonbibra_dev.product2(productcode,db_lastmodifiedbyuser,imagesync__c,sourcename__c)VALUES(?, ?,?,?,?)]]></sql>
                <parameter type="VARCHAR" value="CarSales"/>
                <parameter type="VARCHAR" value="qrsintegration"/>
                **<parameter type="VARCHAR" expression="get-property('syncFlag')"/>**
                <parameter type="VARCHAR" value="CarSales"/>
            </statement>
  </dbreport>

我已经尝试了一些下面提到的特定列的强制转换,不幸的是它们都不起作用。

铸造方式

<parameter value="select get-property('syncFlag')::boolean" type="VARCHAR"/>
<parameter value="CAST(get-property('syncFlag') as BOOLEAN)" type="VARCHAR"/>
<parameter type="VARCHAR" value="1"/>
<parameter type="VARCHAR" value="SELECT DECODE(get-property('syncFlag'), 'false', '0', 'true', '1' )::BOOLEAN"/>

参考资料:

CAST Function

TypeCasting

Cast VARCHAR to BOOLEAN

【问题讨论】:

【参考方案1】:

我已经通过 在 sql 查询中而不是输入参数中的铸造解决了我的问题

<property name="syncFlag" scope="default" type="BOOLEAN" value="true"/>
<dbreport description="Insert into product2">
            <connection>
                <pool>
                    <dsName>jdbc/QRSagAppSyncDataSource</dsName>
                </pool>
            </connection>
            <statement>
                <sql><![CDATA[INSERT INTO vonbibra_dev.product2(productcode,db_lastmodifiedbyuser,imagesync__c,sourcename__c)VALUES(?, ?,?,?::BOOLEAN,?)]]></sql>
                <parameter type="VARCHAR" value="CarSales"/>
                <parameter type="VARCHAR" value="qrsintegration"/>
                **<parameter type="VARCHAR" expression="get-property('syncFlag')"/>**
                <parameter type="VARCHAR" value="CarSales"/>
            </statement>
  </dbreport>

【讨论】:

以上是关于引起:org.postgresql.util.PSQLException:错误:列“imagesync__c”的类型为布尔值,但表达式的类型为字符变化的主要内容,如果未能解决你的问题,请参考以下文章

杂牌设备网络接入引起交换机引起端口翻转的故障

csharp 可能会引起问题的类的继承问题,父类后来增加的方法可能会引起子类的函数重载错误

两则dhcp设置引起的故障

大开测试:性能-如何解决由于设置引起的运行失败问题(连载22)

查找由智能指针引起的内存泄漏

电脑蓝屏问题引起原因及解决办法