我的DBreport介体出现问题,输出语法错误,但我在SQL语句中看不到任何错误
<sequence xmlns="http://ws.apache.org/ns/synapse" name="_dbcount">
<dblookup>
<connection>
<pool>
<password>1234</password>
<user>root</user>
<url>jdbc:mysql://localhost:3306/new_db</url>
<driver>com.mysql.jdbc.Driver</driver>
</pool>
</connection>
<statement>
<sql>
<![CDATA[ select * from consume where username= ? and id_api+ ?]]></sql>
<parameter value="riccardo" type="VARCHAR" />
<parameter value="1" type="INTEGER" />
<result name="result_use" column="use" />
<result name="result_user" column="username" />
</statement>
</dblookup>
<dbreport>
<connection>
<pool>
<password>1234</password>
<user>root</user>
<url>jdbc:mysql://localhost:3306/new_db</url>
<driver>com.mysql.jdbc.Driver</driver>
<property name="autocommit" value="false" />
</pool>
</connection>
<statement>
<sql>
<![CDATA[UPDATE consume SET use=21 WHERE username='riccardo' AND id_api='1']]></sql>
</statement>
</dbreport>
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" name="result for client" expression="get-property('result_user')" />
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" name="result for use" expression="get-property('result_use')" />
</log>
</sequence>
第一个数据库查找工作正常,但DBreport中的第二个SQL语句无法更新值:
ERROR - DBReportMediator Error execuring insert statem
ent : UPDATE consume SET use='21' WHERE username='riccardo' AND id_api='1' again
st DataSource : jdbc:mysql://localhost:3306/new_db
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in
your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near 'use='21' WHERE username='riccardo' AND id_api=
'1'' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)...
我的表格如下:
consume(int id,varchar username,int id_api,int use) users(int id,varchar username,varchar password)
非常感谢编辑我认为在写一个Mysql数据库时DBREPORT和DBLOOKUP调解员存在重大问题,阅读很好,但更新和插入只是不起作用... 告诉我,如果我错了
答案 0 :(得分:0)
Nuvio,
我认为这个问题的出现不是因为DBReport中介出了问题。在浏览报告的堆栈跟踪和序列配置时,我可以看到您已定义&#34;使用&#34;作为列名。我不太确定您是如何使用术语&#34创建数据库列的;使用&#34;因为它是一个MySQL关键字,并且只要在SQL查询中有关键字作为列或任何其他用户定义的属性,MySQL查询编译器就应抛出SQLException。使用非关键字名称代替列&#34;使用&#34;会解决你的问题。
干杯, Prabath