[解決済み】DynamoDB : 提供されたキー要素がスキーマと一致しません。
質問
テーブルユーザー
id (HashKey), name, email
ハッシュキー以外のフィールドに依存する項目を取得したい
例えば、emailが'[email protected]'であるユーザーを取得したい。
botoで試しています。
user = users.get_item(email='[email protected]')
しかし、私はエラーが表示されます。
'The provided key element does not match the schema'
解決方法は?
ハッシュキー以外のフィールドを問い合わせるには、Global Secondary Index (GSI)を使用する必要があります。以下を見てください。 このAWSの記事 をご覧ください。
2015年2月にUPDATEしました。 既存のテーブルにGSIを追加することが可能になりました。詳細は アマゾンドキュメント をご覧ください。
悲しいかな
既存のDynamoDBテーブルにGSIを追加することはできません。
ので、本当にクエリを実行する必要がある場合は、新しいテーブルを作成してデータを移植する必要があります。
からの DynamoDB FAQ :
<ブロッククオートQ: DynamoDBテーブルのグローバルセカンダリインデックスを作成するにはどうすればよいですか?
テーブルに関連するすべての GSI は、テーブル作成時に指定する必要があります。現時点では、テーブルを作成した後にGSIを追加することはできません。テーブルとそのインデックスの作成に関する詳細な手順については、以下を参照してください。
こちら
. を作成することができます。
5つのグローバルセカンダリーインデックス
テーブルごとに
あなたがあなたのデータを移植したくない場合は、メインデータテーブルへのルックアップとして使用するために、ハッシュキーと親レコードのハッシュとして電子メールを持つ第2のDynamoDBテーブルを作成することを考えることができますが、あなたが想像できるようにこれは必ずしも最適なソリューションではなく、それはあなたのマスターテーブルと同期してそれを保つために独自の頭痛を持って来るようにします。
関連
-
mysqlでインデックスに障害が発生する原因は何ですか?
-
SQL集計、グループ化、ソート
-
[解決済み】MySQL - オペランドは1つのカラムを含む必要があります。
-
[解決済み】DynamoDB : 提供されたキー要素がスキーマと一致しません。
-
[解決済み】MySQL エラー 1093 - FROM 句で更新のターゲット テーブルを指定できません。
-
[解決済み】DynamoDB - キー要素がスキーマと一致しない
-
Mysqlの使用中に発生したエラーの一部
-
[解決済み] なぜ SQLAlchemy の count() は生のクエリよりずっと遅いのでしょうか?
-
[解決済み] リストの最後の要素を取得する方法
-
[解決済み] MySQLでコマンドラインを使用してユーザーアカウントのリストを取得するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLデータベースで数百万件のデータを10秒間で挿入
-
[解決済み】DynamoDB : 提供されたキー要素がスキーマと一致しません。
-
[解決済み] 親の行を削除または更新できない:外部キー制約が失敗する
-
[解決済み] ユニークなテーブル/エイリアスではない
-
sql エラーを解決する オペランドには1つの列が含まれている必要があります。
-
msql クエリでのエラー 'where 節' の不明な列 'yellow fruit'
-
mysql がエラーを報告します。不明な文字セットです。'utf8mb4'
-
CMakeエラー。ソースディレクトリ "/xxx/mysql-5.6.21" に CMakeLists.txt がないようです。
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?