簡體   English   中英

wso2 dss mysql錯誤

[英]wso2 dss mysql error

我在嘗試在wso2 dss上測試數據服務時收到此錯誤

DS錯誤消息:“ SQLQuery.processStoredProcQuery”中的錯誤DS代碼:DATABASE_ERROR源數據服務:-名稱:CustomerDS位置:\\ CustomerDS-1.0.0.dbs說明:N / A默認名稱空間: http ://ws.wso2.org/dataservice當前請求名稱:op1當前參數:{Name = ?, NID =?}嵌套異常:-DS錯誤消息:'createProcessedPreparedStatement'DS代碼錯誤:UNKNOWN_ERROR嵌套異常:-java.sql.SQLException:參數索引3超出范圍(1, 0)

有什么建議么?

編輯:bds文件如下,這是wso2文檔中提到的示例案例。

<data name="CustomerDS">                  
   <config id="default">                              
      <property name="org.wso2.ws.dataservice.driver">com.mysql.jdbc.Driver</property>                              
      <property name="org.wso2.ws.dataservice.protocol">jdbc:mysql://localhost:3306/CustomersDatabase</property>                              
      <property name="org.wso2.ws.dataservice.user">root</property>                              
      <property name="org.wso2.ws.dataservice.password">root</property>               
   </config>               
   <query id="q1" useConfig="default">                              
      <sql>call getCustomer(?,?,?,?)</sql>                              
      <result element="Entries" rowName="Entry">                                             
         <element name="Flag" column="Flag" xsdType="xs:integer" optional="true" />                                             
         <element name="Customer" column="Customer" xsdType="xs:string" optional="true" />                              
      </result>                              
      <param name="NID" sqlType="STRING" ordinal="1" />                              
      <param name="Name" sqlType="STRING" ordinal="2" />                              
      <param name="Flag" sqlType="INTEGER" type="OUT" ordinal="3" />                              
      <param name="Customer" sqlType="STRING" type="OUT" ordinal="4" />               
   </query>               
   <operation name="op1">                              
      <call-query href="q1">                                             
         <with-param name="NID" query-param="NID" />                                             
         <with-param name="Name" query-param="Name" />                              
      </call-query>               
   </operation>
</data>

對我有用的東西!

我在http://svn.wso2.org/repos/wso2/people/kasun/wso2con_2013/starbucks_2.0/dss/StarbucksDataService.dbs中找到了參考代碼

最終對我有用的過程調用是(過程本身發生了變化)

    <data name="CustomerDS">                  
   <config id="default">                              
      <property name="org.wso2.ws.dataservice.driver">com.mysql.jdbc.Driver</property>                              
      <property name="org.wso2.ws.dataservice.protocol">jdbc:mysql://localhost:3306/CustomersDatabase</property>                              
      <property name="org.wso2.ws.dataservice.user">root</property>                              
      <property name="org.wso2.ws.dataservice.password">root</property>               
   </config>               
   <query id="q1" useConfig="default">                              
      <sql>call getCustomer(?,?)</sql>                              
      <result element="Entries" rowName="Entry">                                             
         <element name="Flag" column="Flag" xsdType="xs:integer" optional="true" />                                             
         <element name="Customer" column="Customer" xsdType="xs:string" optional="true" />                              
      </result>                              
      <param name="NID" sqlType="STRING" ordinal="1" />                              
      <param name="Name" sqlType="STRING" ordinal="2" />                              
      <param name="Flag" sqlType="INTEGER" type="OUT" ordinal="3" />                              
      <param name="Customer" sqlType="STRING" type="OUT" ordinal="4" />               
   </query>               
   <operation name="op1">                              
      <call-query href="q1">                                             
         <with-param name="NID" query-param="NID" />                                             
         <with-param name="Name" query-param="Name" />                              
      </call-query>               
   </operation>
</data>

現在暫定的工作程序為:

DELIMITER // 
CREATE procedure getCustomer(NID varchar(200),Name varchar(200))  
BEGIN 
DECLARE id varchar(200); 
DECLARE flag int;
SET Flag = 0;
SET id = CONCAT(NID, '_' ,  Name); 

INSERT INTO Customer(NID, Name, customerID) VALUES(NID, Name, id); 

select flag, customerid from customer where customerID = id;
END//

在查詢q1中,getCustomer(?,?,?,?)調用有4個參數,在輸入映射列表中只有2個輸入參數(僅IN)。 這一定是導致此異常的原因。 請參考教程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM