2012-05-18 4 views
3

J'essaie de mettre à jour une table dans mes tables DynamoDB en utilisant le SDK PHP. Voici l'erreur:DynamoDB avec PHP, erreur avec update_item

com.amazon.coral.service # SerializationException Début de la liste qui se trouve où ne devrait

Je devine qu'il ya quelque chose de mal avec la mise en forme de mon tableau. J'utilise ce documentation pour référence.

Array J'envoie:

array(3) { 
    ["TableName"]=> 
    string(7) "teacher" 
    ["Key"]=> 
    array(1) { 
    ["HashKeyElement"]=> 
    array(1) { 
     ["S"]=> 
     string(36) "97770A6A-EF06-AF4A-3E30-87DAC0237F6D" 
    } 
    } 
    ["AttributeUpdates"]=> 
    array(1) { 
    [0]=> 
    array(2) { 
     ["population"]=> 
     array(1) { 
     ["Action"]=> 
     string(3) "ADD" 
     } 
     ["Value"]=> 
     array(1) { 
     ["SS"]=> 
     array(1) { 
      [0]=> 
      string(36) "97770A6A-EF06-AF4A-3E30-87DAC0237F6D" 
     } 
     } 
    } 
    } 
} 

Répondre

0

La "population" dans AttributeUpdates est mal placé dans le tableau. Ce devrait être une clé pour l'élément et non l'élément lui-même. La "valeur" et "Action" font tous deux partie de l'élément de tableau: La structure devrait être:

array(3) { 
    ["TableName"]=> 
    string(7) "teacher" 
    ["Key"]=> 
    array(1) { 
    ["HashKeyElement"]=> 
    array(1) { 
     ["S"]=> 
     string(36) "97770A6A-EF06-AF4A-3E30-87DAC0237F6D" 
    } 
    } 
    ["AttributeUpdates"]=> 
    array(1) { 
    ["population"]=> 
    array(1) { 
     ["Value"]=> 
     array(2) { 
     ["SS"]=> 
     array(1) { 
      [0]=> 
      string(36) "97770A6A-EF06-AF4A-3E30-87DAC0237F6D" 
     } 
     ["Action"]=> 
     string(3) "ADD" 
     } 
    } 
    } 
} 

La source:

$updateOptions = array(
    'TableName' => 'teacher', 
    'Key'   => array(
     'HashKeyElement' => array('S' => '97770A6A-EF06-AF4A-3E30-87DAC0237F6D'), 
), 
    'AttributeUpdates' => array(
     'population' => array('Value' => array('SS' => array('97770A6A-EF06-AF4A-3E30-87DAC0237F6D'), 'Action' => 'ADD')), 
) 
);