【发布时间】:2012-08-30 04:44:23
【问题描述】:
我的 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>
第一个 DB 查找工作正常,但 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) 用户(int id、varchar 用户名、varchar 密码)
非常感谢
编辑我认为在 Mysql DB 上写入时,DBREPORT 和 DBLOOKUP 调解器存在重大问题,阅读很好,但更新和插入不起作用...... 如果我错了告诉我
【问题讨论】:
-
您知道如何在 API 管理器中限制特定 API 的使用吗?不是限制层,而是限制用户 Bob 调用“API SEND TEXT”10 次并停止。
-
我正在尝试解决在“API SND TEXT”之前调用的序列和代理,但情况越来越糟,而且这些中介不能真正更新或插入 MySql 数据库中的任何内容,我认为它是一个重大错误。最好的办法是直接控制 API MANAGER 中的 API 使用,但不知道如何......
-
如果您需要处理数据库来插入/更新和检索数据,请使用DataServices服务器。
-
在 API 管理器中控制部分是使用节流来完成的。所以,当你发布 API 时,你应该选择不同的级别,允许用户使用特定的层。对不起,我不太明白你的意思“模仿用户 Bob 调用“API SEND TEXT”
-
我的意思是让 Bob 只发送 20 条消息,当他完成这些消息后,他就不能再使用该服务了。这与节流不同,因为节流具有“一分钟调用 3 次”或“无限制”之类的逻辑,以及类似的工作人员......
标签: wso2 esb wso2esb orchestration