引起: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 可能会引起问题的类的继承问题,父类后来增加的方法可能会引起子类的函数重载错误