2

我在将数据发送到我的 DynamoDB 时遇到问题。我不知道问题是什么,因为它似乎程序运行正确,但是我的数据库中似乎没有任何数据。我能够使用Amazons tutorial创建表,但是当我按照本教程进行操作时,如果我尝试放置所有项目,我会得到一个失败的响应,而当它只有一个项目时,我会得到一个错误的成功,因为数据库中没有任何更新。

这是代码,如果有人知道调试此类问题的方法,我特别好奇。

<?php
// If necessary, reference the sdk.class.php file. 
// For example, the following line assumes the sdk.class.php file is 
// in an sdk sub-directory relative to this file
require_once('includes/backend.php'); 

// Instantiate the class
$dynamodb = new AmazonDynamoDB();

####################################################################
# Setup some local variables for dates

$one_day_ago = date('Y-m-d H:i:s', strtotime("-1 days"));
$seven_days_ago = date('Y-m-d H:i:s', strtotime("-7 days"));
$fourteen_days_ago = date('Y-m-d H:i:s', strtotime("-14 days"));
$twenty_one_days_ago = date('Y-m-d H:i:s', strtotime("-21 days"));

####################################################################
# Adding data to the table

echo PHP_EOL . PHP_EOL;
echo "# Adding data to the table..." . PHP_EOL;

// Set up batch requests
$queue = new CFBatchRequest();
$queue->use_credentials($dynamodb->credentials);

// Add items to the batch
$dynamodb->batch($queue)->put_item(array(
    'TableName' => 'ProductCatalog',
    'Item' => array(
        'Id'              => array( AmazonDynamoDB::TYPE_NUMBER           => '101'              ), // Hash Key
        'Title'           => array( AmazonDynamoDB::TYPE_STRING           => 'Book 101 Title'   ),
        'ISBN'            => array( AmazonDynamoDB::TYPE_STRING           => '111-1111111111'   ),
        'Authors'         => array( AmazonDynamoDB::TYPE_ARRAY_OF_STRINGS => array('Author1')   ),
        'Price'           => array( AmazonDynamoDB::TYPE_NUMBER           => '2'                ),
        'Dimensions'      => array( AmazonDynamoDB::TYPE_STRING           => '8.5 x 11.0 x 0.5' ),
        'PageCount'       => array( AmazonDynamoDB::TYPE_NUMBER           => '500'              ),
        'InPublication'   => array( AmazonDynamoDB::TYPE_NUMBER           => '1'                ),
        'ProductCategory' => array( AmazonDynamoDB::TYPE_STRING           => 'Book'             )
    )
));


echo "Item put in <b>Reply</b>" . "<br/>";   

// Execute the batch of requests in parallel
$responses = $dynamodb->batch($queue)->send();

// Check for success...
if ($responses->areOK())
{
    echo "The data has been added to the table." . PHP_EOL;
}
    else
{
    utdump($responses);
}

感谢您的时间

4

1 回答 1

1

尝试明确设置您的区域,例如对于欧盟,您需要调用:

$myDynamoDbObject->set_region('dynamodb.eu-west-1.amazonaws.com');

也可能是您在不同区域有两个表,您的应用程序使用其中一个,并且由于应用了不同的默认区域,您尝试读取(或使用 Web 控制台跟踪)另一个表。

如果您要跟踪表中的项目数量,请记住这不是实时数字,它仅每 6 小时左右更新一次。因此,使用方式可以确保您的项目确实被写入,方法是在您收到 put 请求的“OK”响应后立即尝试读回它。

于 2012-05-21T10:37:11.157 回答