gpt4 book ai didi

java - 在 DynamoDB 中使用排序键时出现“索引键类型不匹配”

转载 作者:行者123 更新时间:2023-11-30 08:02:10 26 4
gpt4 key购买 nike

我有一个包含以下索引的表:

  • 用户
    • id(字符串,主要)
    • 电子邮件(字符串,全局二级)
    • expiresOn(日期(字符串),全局次要)
    • is_premium( boolean 值)

我想让 is_premium 成为 expiresOn 的范围/排序键,这样我就可以查询在今天之前或当天到期的所有帐户,并且其中有 is_premium = true。

如果我只是查询今天之前/今天到期的所有帐户,但没有 is_premium=true,我会得到结果表中 90% 的内容。

但是,如果我尝试在 is_premium 上设置范围查询,当我尝试将记录保存到表中时会出现以下错误:

com.amazonaws.AmazonServiceException: Type mismatch for Index Key (Service: null; Status Code: 400; Error Code: ValidationException; Request ID: null)

at com.amazonaws.services.dynamodbv2.local.embedded.DDBExceptionMappingInvocationHandler.handleDynamoDBLocalServiceException(DDBExceptionMappingInvocationHandler.java:76) at com.amazonaws.services.dynamodbv2.local.embedded.DDBExceptionMappingInvocationHandler.invoke(DDBExceptionMappingInvocationHandler.java:58) at com.sun.proxy.$Proxy70.putItem(Unknown Source) at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.doPutItem(DynamoDBMapper.java:1270) at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$1.executeLowLevelRequest(DynamoDBMapper.java:879) at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.execute(DynamoDBMapper.java:1120) at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:966) at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:758)

我在 dynamoDbMapper.save(order) 上得到这个

如果我删除排序/范围键,一切正常。

知道我做错了什么吗?错误非常模糊。

最佳答案

dynamodb 中的哈希/范围键不支持 boolean 字段。 (仅支持字符串/数字/二进制)。

您需要将其转换为 STRING 或 NUMBER(或添加新列)。 (如果这将是您的范围键,那么它可以是“真”/“假”或 0/1)。如果它是您的哈希键,那么它可能会更复杂。

关于java - 在 DynamoDB 中使用排序键时出现“索引键类型不匹配”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37119798/

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