类 java.lang.String 在 DynamoDB 创建表时无法转换为 Long

Posted

技术标签:

【中文标题】类 java.lang.String 在 DynamoDB 创建表时无法转换为 Long【英文标题】:class java.lang.String can not be converted to an Long while DynamoDB creating table 【发布时间】:2014-09-09 04:19:51 【问题描述】:

我想使用 php-aws-sdk 创建 dynamodb 表

set_time_limit(0);
error_reporting(E_ALL);

require_once 'aws/aws-autoloader.php';

use Aws\DynamoDb\DynamoDbClient;

$ddb = DynamoDbClient::factory(array(
    'key'    => $_SERVER['AWS_KEY']),
    'secret' => $_SERVER['AWS_SECRET']),
    'region' => $_SERVER['AWS_REGION'])
));

$name = 'test';

$ddb->createTable(array(
    'TableName' => $name,
    'AttributeDefinitions' => array(
        array(
            'AttributeName' => 'Event ID',
            'AttributeType' => 'S'
        )
    ),
    'KeySchema' => array(
        array(
            'AttributeName' => 'Event ID',
            'KeyType' => 'HASH'
        )
    ),
    'ProvisionedThroughput' => array(
        'ReadCapacityUnits' => $_SERVER['DDB_READ_CAPACITY_UNITS']),
        'WriteCapacityUnits' => $_SERVER['DDB_WRITE_CAPACITY_UNITS']),
    )
));

echo $name;

它在本地机器上成功运行,但在 Elasticbeanstalk 上运行脚本时出现错误

致命错误:未捕获的 Aws\DynamoDb\Exception\DynamoDbException:AWS 错误代码:SerializationException,状态代码:400,AWS 请求 ID: HTTCDOVSES4RU0V8IVIQFGREL7VV4KQNSO5AEMVJF66Q9ASUAAJG,AWS 错误类型: 客户端,AWS 错误消息:无法转换类 java.lang.String 到一个长的用户代理:aws-sdk-php2/2.6.12 Guzzle/3.9.1 curl/7.36.0 PHP/5.5.12 抛出 /var/app/current/aws/Aws/Common/Exception/NamespaceExceptionFactory.php 在第 91 行

【问题讨论】:

【参考方案1】:

我怀疑,由于错误涉及到错误的字符串到长(数字)转换,因此您的 DDB_READ_CAPACITY_UNITSDDB_WRITE_CAPACITY_UNITS 值在从 $_SERVER 读取为字符串时存在问题。尝试将它们转换/转换为整数。

'ProvisionedThroughput' => array(
    'ReadCapacityUnits' => (int) $_SERVER['DDB_READ_CAPACITY_UNITS'],
    'WriteCapacityUnits' => (int) $_SERVER['DDB_WRITE_CAPACITY_UNITS'],
)

【讨论】:

你是我的英雄!非常感谢

以上是关于类 java.lang.String 在 DynamoDB 创建表时无法转换为 Long的主要内容,如果未能解决你的问题,请参考以下文章

JPype1 = 0.7.0:TypeError:无法转换str java类型类java.lang.String

java.lang.String 类源码解读

JDK1.8源码——java.lang.String 类

类 java.lang.String 在 DynamoDB 创建表时无法转换为 Long

类转换:java.lang.String 不能转换为 org.mozilla.javascript.Scriptable

JDK1.8源码——java.lang.String类