0
我正在使用wso2esb 4.8.0,并且通过wso2esb文档中给出的这个场景。我希望将记录从第一个数据库复制到第二个数据库,只要我删除它们从第一个数据库。但是当我把重复的记录它既不应该从第一个删除也不能插入第二个。wso2esb中的事务仲裁4.8.0
我的代理服务:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="Transaction_mediator"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<property name="name"
expression="//name/text()"
scope="default"
type="STRING"/>
<property name="id"
expression="//id/text()"
scope="default"
type="STRING"/>
<property name="price"
expression="//price/text()"
scope="default"
type="STRING"/>
<transaction action="new"/>
<log level="full">
<property name="text" value="Reporting to the DB1"/>
</log>
<dbreport useTransaction="true">
<connection>
<pool>
<dsName>DS1</dsName>
</pool>
</connection>
<statement>
<sql>
delete from c1 where name=?</sql>
<parameter expression="get-property('name')" type="VARCHAR"/>
</statement>
</dbreport>
<log level="full">
<property name="text" value="Reporting to the DB2"/>
</log>
<dbreport useTransaction="true">
<connection>
<pool>
<dsName>DS2</dsName>
</pool>
</connection>
<statement>
<sql>
INSERT into c1 values (?,?,?)</sql>
<parameter expression="get-property('name')" type="VARCHAR"/>
<parameter expression="get-property('id')" type="INTEGER"/>
<parameter expression="get-property('price')" type="INTEGER"/>
</statement>
</dbreport>
<transaction action="commit"/>
<send/>
</inSequence>
<outSequence>
<log level="full"/>
<send/>
</outSequence>
</target>
<description/>
</proxy>
它的工作,但是,当我把重复记录。当时它从第一删除记录,但没有插入第二database.What应该怎么办发生了错误?是他们的任何解决方案?让我知道。
你能在这里粘贴碳日志吗? –
其实它工作,但如果我把重复记录,然后它从第一个表中删除,但不插入第二个表中,并显示错误,如:DBReportMediator错误执行插入语句:插入到数据源的c1值(?,?,?):DS2 org.postgresql.util.PSQLException:错误:重复键值违反唯一约束“c1_pkey” 详细信息:键(名称)=(SUN)已经存在。 – user3129056