2012-09-05 2 views
0

내가하는 출력 구문 오류 발생 DBreport 중재자에 문제가 있지만이 SQL 문에서 오류를 볼 수WSO2 ESB 순서 DB 업데이트

<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 조회는 잘 작동하지만, 다음과 같이

내 테이블

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)... 
은 다음과 같습니다 다음 DBreport에서 두 번째 SQL 문이 값을 업데이트 할 수 없습니다

소비 (INT 아이디, VARCHAR 사용자 이름, INT의 id_api, INT 사용) 사용자 (INT 아이디, VARCHAR 사용자 이름, VARCHAR 암호)

많은 감사

편집 내가 MySQL을 DB에 쓰기 DBREPORT 및 DBLOOKUP 매개로 큰 문제가 있다고 생각 읽기 괜찮지 만, 업데이트 및 삽입 그냥 내가

+0

= '21 '이 아닌가요? – Ratha

+0

API 관리자에서 특정 API의 사용을 어떻게 제한 할 수 있습니까? 스로틀 티어는 아니지만 Bob에게 "API SEND TEXT"를 10 번 호출하고 중지하도록 제한합니다. – nuvio

+0

"API SND TEXT"전에 해결 방법 및 프록시를 시도하고 있지만 점점 더 악화되고 있으며 이러한 중개자는 MySql DB에서 실제로 업데이트하거나 삽입 할 수 없기 때문에 주요 버그라고 생각합니다. 가장 좋은 방법은 API MANAGER 내에서 API 사용법을 직접 제어하는 ​​것이지만, 방법을 모르면 ... – nuvio

답변

0

Nuvio 잘못 생각하는 경우 가

나는이 문제 때문에 DBReport 중재자에 뭔가 잘못이 아닌 발생 생각 말해 ... 작동하지 않습니다. 보고 된 스택 추적과 시퀀스 구성을 통해 "사용"을 열 이름으로 정의했음을 알 수 있습니다. MySQL 키워드이고 MySQL 쿼리 컴파일러는 SQL 쿼리에서 열 또는 다른 사용자 정의 특성으로 키워드를 가질 때마다 SQLException을 던져야하기 때문에 용어 "사용"이있는 데이터베이스 열을 어떻게 작성했는지 잘 모르겠습니다. . '사용'열 대신 키워드가 아닌 이름을 사용하면 문제가 해결됩니다.

건배, 프라바트

+0

예 덕분에 이미 알고 있었지만 요구 사항에 맞는 수업 중재자를 만들어 문제를 해결했습니다. 어쨌든 답을 수락 할 것입니다. 감사합니다. 감사합니다. – nuvio