Hyperledger fabric 无法获取下一个结果:查询\状态\下一个失败:事务ID:XXXXX:无分类账上下文
我正在尝试使用chaincode中的查询从区块链获取数据。我在区块链中调用了大约2,50000条记录,并尝试使用查询获取数据。当我运行链码并获取对等日志时,我得到以下错误 对等日志中的链码错误: 这是我的密码:Hyperledger fabric 无法获取下一个结果:查询\状态\下一个失败:事务ID:XXXXX:无分类账上下文,hyperledger-fabric,blockchain,hyperledger-chaincode,couchdb-mango,Hyperledger Fabric,Blockchain,Hyperledger Chaincode,Couchdb Mango,我正在尝试使用chaincode中的查询从区块链获取数据。我在区块链中调用了大约2,50000条记录,并尝试使用查询获取数据。当我运行链码并获取对等日志时,我得到以下错误 对等日志中的链码错误: 这是我的密码: queryStringsa := fmt.Sprintf("{\"selector\":{\"$and\":[{\"savesID\":{\"$ne\":\"%s\"}},{\"bankID\":{\"$eq\":\"%s\"}},{\"ytdSavedFlag\":{\"$ne\":
queryStringsa := fmt.Sprintf("{\"selector\":{\"$and\":[{\"savesID\":{\"$ne\":\"%s\"}},{\"bankID\":{\"$eq\":\"%s\"}},{\"ytdSavedFlag\":{\"$ne\":\"%s\"}},{\"saveMonthYear\":{\"$eq\":\"%s\"}}]},\"use_index\":[\"_design/indexSavesDataReportDoc\",\"indexSavesDataReportName\"]}","null",bankidsave,"Yes",lastImportDatekey)
queryResultss11sa, errsav := getQueryResultForQueryString(stub, queryStringsa)
// getQueryResultForQueryString
func getQueryResultForQueryString(stub shim.ChaincodeStubInterface, queryString string) ([]byte, error) {
_scbLogger.Infof(string("**********************************"))
_scbLogger.Infof(string("getQueryResultForQueryString queryString : "+ queryString))
_scbLogger.Infof(string("**********************************"))
resultsIterator, err := stub.GetQueryResult(queryString)
if err != nil {
_scbLogger.Error("Error Starting SCB-Efficiency Chaincode is " + string(err.Error()))
return nil, err
}
defer resultsIterator.Close()
// buffer is a JSON array containing QueryRecords
var buffer bytes.Buffer
buffer.WriteString("[")
bArrayMemberAlreadyWritten := false
fmt.Println("resultsIterator length : ", (resultsIterator))
for resultsIterator.HasNext() {
queryResponse, err := resultsIterator.Next()
//fmt.Println("queryresponse inside for next : ", queryResponse)
if err != nil {
fmt.Println("$$$$$$$$$$$ error in reuslt iterator : ", err)
return nil, err
}
// Add a comma before array members, suppress it for the first array member
if bArrayMemberAlreadyWritten == true {
buffer.WriteString(",")
}
buffer.WriteString("{\"Key\":")
buffer.WriteString("\"")
buffer.WriteString(queryResponse.Key)
buffer.WriteString("\"")
buffer.WriteString(", \"Record\":")
// Record is a JSON object, so we write as-is
//fmt.Println("string(queryResponse.Value) : ",string(queryResponse.Value))
buffer.WriteString(string(queryResponse.Value))
buffer.WriteString("}")
bArrayMemberAlreadyWritten = true
}
buffer.WriteString("]")
//fmt.Printf("- getQueryResultForQueryString queryResult:\n%s\n", buffer.String())
return buffer.Bytes(), nil
}
我在同一个函数中有5组不同的查询。有时很少有查询返回查询结果,有时没有查询给出结果,而是显示上述错误
当我在CouchDB fauxton中运行相同的查询时,我得到了查询结果。当我为更少的记录运行相同的函数时,查询工作正常,没有任何错误 您可以尝试将反斜杠(\)更改为正斜杠(/)…我对这个主题不太了解,但我知道反斜杠对于表示转义字符有特殊意义…如果使用反斜杠表示目录,则会产生问题。要么我们需要将它们改为正向斜杠,要么我们可以通过在开头加上一个“r”来明确表示它是一个原始字符串。谢谢您的回复@hafiz031。当我将查询作为字符串传递时,它不接受正斜杠(/)。您可以尝试将反斜杠(\)更改为正斜杠(/)…我对此主题不太了解,但我知道反斜杠对于表示转义字符有特殊意义…如果我们使用反斜杠表示目录,则会产生问题。要么我们需要将它们改为正向斜杠,要么我们可以通过在开头加上一个“r”来明确表示它是一个原始字符串。谢谢您的回复@hafiz031。当我将查询作为字符串传递时,它不接受正斜杠(/)。