gpt4 book ai didi

python - 运行存储过程时分区键错误

转载 作者:行者123 更新时间:2023-12-03 05:51:50 25 4
gpt4 key购买 nike

我正在尝试将单个记录插入到分区键为 /newpart 的集合中

为了确保我解释了什么是分区键,我假设它是此处所示的值。

enter image description here

在该集合中,我有一个名为 createMyDocument 的存储过程,其中包含

function createMyDocument(documentToCreate) {
var context = getContext();
var collection = context.getCollection();

var accepted = collection.createDocument(collection.getSelfLink(),
documentToCreate,
function (err, documentCreated) {
if (err) throw new Error('Error' + err.message);
context.getResponse().setBody(documentCreated.id)
});
if (!accepted) return;
}

我通过 Python 调用它:

config = {
'ENDPOINT': 'deleted',
'MASTERKEY': 'deleted',
'DOCUMENTDB_DATABASE': 'database',
'DOCUMENTDB_COLLECTION': 'newup'
};

client = document_client.DocumentClient(config['ENDPOINT'], {'masterKey': config['MASTERKEY'] ,'DisableSSLVerification' : 'true' })
data = {"name":"Ben","age":30,"city":"New York"}
client.ExecuteStoredProcedure('dbs/database/colls/newup/sprocs/createMyDocument', data, {"partitionKey" : "/newpart"})

返回的错误是源自脚本的请求不能引用除提交客户端请求的分区键之外的分区键

所以我对错误消息感到困惑,因为存储过程(据我理解)存储在分区键为 /newpart 的集合中。这是同一个集合,因此我尝试将文档插入到的分区键(?)也相同。然而,错误表明情况并非如此。

最佳答案

当从客户端执行存储过程时,RequestOptions 指定分区键,存储过程将在此分区的上下文中运行,并且无法对具有不同分区键值的文档进行操作(例如创建)。

您可以做的是从客户端为每个分区键执行存储过程。例如,如果存储过程要批量创建文档,您可以按分区键对文档进行分组,并将每个组(可以并行完成)发送到在 RequestOptions 中提供分区键值的存储过程。这会有帮助吗?

您不必为每个分区键创建存储过程,只需创建一次而不提供分区键。

根据您的代码,您似乎正在尝试插入没有分区键的文档,并且它将被分组到没有分区键的文档的特殊分区中。

另外,您可以引用这个帖子:Azure DocumentDB - Requests originating from scripts cannot reference partition keys other than the one for which client request was submitted

希望对您有帮助。

更新

请修改您的代码如下:

data = {"name":"Ben","age":30,"city":"New York","newpart":"11"}

client.ExecuteStoredProcedure('dbs/db/colls/newcoll/sprocs/createMyDocument', data , {"partitionKey": "11"})

由于您的集合有分区键集,因此您要插入的文档必须有分区键集,否则数据库将不知道将其放置在哪个分区。

当然,文档中设置的分区键也应该与存储过程执行时设置的分区键一致,否则就会出现上述问题。因为你只能操作你执行存储过程时设置的分区。

关于python - 运行存储过程时分区键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46968150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com