诊断和排查 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
。
后续步骤
- 诊断和排查在使用 Azure Cosmos DB .NET SDK 时遇到的问题。
- 了解 .NET v3 和 .NET v2 的性能准则。
- 诊断和排查使用 Azure Cosmos DB Java v4 SDK 时遇到的问题。
- 了解 Java v4 SDK 的性能准则。