诊断和排查 Azure Cosmos DB 中的“错误的请求”异常

适用范围: NoSQL

HTTP 状态代码 400 表示请求包含无效数据,或缺少必需的参数。

缺少 ID 属性

在此情况下,经常会出现以下错误:

“输入内容无效,因为缺少必需属性 - 'id;'”

响应中包含此错误意味着发送到服务的 JSON 文档缺少必需的 ID 属性。

解决方案

根据 REST 规范指定一个使用字符串值的 id 属性作为文档的一部分,SDK 不会自动生成此属性的值。

无效的分区键类型

在此情况下,经常会出现类似于下面的错误:

“分区键 ... 无效。”

响应中包含此错误意味着分区键值的类型无效。

解决方案

分区键的值应是字符串或数字,请确保值采用预期的类型。

错误的分区键值

在此情况下,经常会出现以下错误:

响应状态代码不指示成功:BadRequest (400);子状态:1001

从文档中提取的 PartitionKey 与头中指定的 PartitionKey 不匹配

响应中包含此错误意味着你在执行某项操作时,传递的分区键值与文档中预期属性的正文值不匹配。 如果集合的分区键路径为 /myPartitionKey,则文档中会包含一个名为 myPartitionKey 的属性,其值与调用 SDK 方法时作为分区键值提供的值不匹配。

解决方案

发送与文档属性值匹配的分区键值参数。

数值分区键值精度损失

在此情况下,经常会出现类似于下面的错误:

请求的分区键超出键范围,可能是因为分区键值出现精度损失

响应出现此错误可能是由于对具有数值分区键的文档执行操作,并且其值超出了 Azure Cosmos DB 支持的范围。 有关数值属性值的最大长度,请参阅每项限制

解决方案

如果需要精确数值,请考虑对分区键使用类型 string

后续步骤