Spring Boot 无法对不存在的表执行操作

roqulrg3  于 2022-12-04  发布在  Spring
关注(0)|答案(2)|浏览(209)

将DynamoDb与Sping Boot 配合使用以存储数据时遇到问题。
下面是一个错误提示:无法对不存在的表执行操作(服务:亚马逊发电机DBv 2;状态代码:400;错误代码:未找到资源异常;请求编号:(请参阅“”)
我已经在Windows计算机上使用以下命令启动了DynamoDb的本地示例

java -Djava.库.路径=./动态数据库本地库-jar动态数据库本地. jar-端口8001 -共享数据库

已创建DynamoDBMapper以与数据库交互

@Bean
public DynamoDBMapper mapper() {
    return new DynamoDBMapper(amazonDynamoDBConfig());
}

public AmazonDynamoDB amazonDynamoDBConfig() {
    return AmazonDynamoDBClientBuilder.standard()
    .withEndpointConfiguration(new 
    AwsClientBuilder.EndpointConfiguration(awsDynamoDBEndPoint, awsRegion))
    .withCredentials(new AWSStaticCredentialsProvider(new 
    BasicAWSCredentials(awsAccessKey, awsSecretKey)))
    .build();
}

并使用@Autowiring调用Map器

@Autowired
private DynamoDBMapper mapper;

当我尝试使用
mapper.save人);
它会给出错误消息无法对不存在的表执行操作
请给予我一些想法,我错过了这里的技巧。提前感谢。

nwlls2ji

nwlls2ji1#

根本原因可能是aws-cli和应用程序使用不同的aws配置文件(身份证明和区域)。当aws-cli和应用程序连接到dynamodb local时,将创建不同的数据库文件并使用不同的数据库文件。
请使用以下方法进行调试。
1.您必须使用sharedDB来启动您的Docker示例。docker run -p 8000:8000 -v $(pwd)/local/dynamodb:/data/ amazon/dynamodb-local -jar DynamoDBLocal.jar -sharedDb -dbPath /data
1.请检查您创建的aws配置文件(aws_access_key_id & aws_secret_access_key)。在您的应用程序中使用这些相同的值来连接到docker dynamoDB示例。

ttcibm8c

ttcibm8c2#

在Person.java(Model类)中检查表名。DynamoDB的表名区分大小写

@DynamoDBTable(tableName = "Person")

或者

@DynamoDBTable(tableName = "person")

相关问题