Tabel tidak memiliki indeks yang ditentukan
TL;DR — IndexName di Query/Scan Anda tidak ada di tabel tersebut (dari wilayah + akun klien ini), salah eja, atau GSI masih CREATING dan belum dapat dikueri. Konfirmasikan nama dan status indeks yang tepat dengan DescribeTable, lalu perbaiki panggilannya.
Apa artinya
ValidationException: The table does not have the specified index: <IndexName>
# what the engine actually returns, reproduced against DynamoDB Local:
ValidationException: The table does not have the specified index: no-such-indexMengapa itu terjadi
- Salah ketik atau salah huruf — nama indeks peka huruf besar-kecil;
GSI1≠gsi1. - Indeks milik tabel berbeda — Anda menyalin
IndexNamedari skema tabel lain. - GSI belum menjadi
ACTIVE— indeks sekunder global yang baru dibuat tidak dapat ditanyakan hingga statusnya menjadiCREATING → ACTIVE(diisi ulang terlebih dahulu). - Wrong region/account — klien menunjuk ke wilayah yang tabelnya (atau indeksnya) tidak ada (masalah susunan yang sama dengan tabel yang hilang).
- DynamoDB Local drift —
shared-local-instance.dblokal basi yang sudah ada sebelum indeks; membuatnya kembali.
Bagaimana cara memperbaikinya
- Cantumkan nama dan status indeks sebenarnya:
aws dynamodb describe-table --table-name <Table> \ --query "Table.GlobalSecondaryIndexes[].{Name:IndexName,Status:IndexStatus}" - Salin nama kata demi kata ke
IndexName— cocokkan huruf besar dan kecilnya. - Tunggu
ACTIVE. Jika GSI adalahCREATING, kueri hanya berfungsi setelah pengisian ulang selesai (DescribeTablemenampilkanIndexStatus). - Konfirmasi wilayah + akun dengan
aws sts get-caller-identitydan sematkanregionklien. - Pada DynamoDB Lokal, hapus file db lokal dan jalankan kembali pengaturan table/index Anda sehingga indeks ada secara lokal.
- Verifikasi kondisi kunci sesuai dengan skema indeks. Nama indeks yang valid dengan kondisi kunci pada atribut yang salah masih gagal — tetapi dengan error yang berbeda; singkirkan nama/status terlebih dahulu.
Bekerja di beberapa tabel dan indeks? Dialog Table DynoTable mencantumkan GSI setiap tabel dan statusnya, sehingga Anda dapat memilih indeks yang benar-benar ada — dan merupakan ACTIVE — daripada menebak-nebak namanya. Ia juga membuat dan menghapus GSI ketika indeks yang Anda butuhkan memang tidak ada.
Query di DynoTable
Buka tabel di DynoTable dengan ⌘K dan perluas panel Indexes — setiap nama GSI dan IndexStatus dicantumkan tanpa panggilan CLI. Pilih indeks dari dropdown di panel kueri alih-alih mengetik IndexName dengan tangan; DynoTable hanya menawarkan indeks yang ada pada tabel yang terhubung.
Jika GSI masih CREATING, segarkan metadata tabel dari sidebar hingga status beralih ke ACTIVE. Gunakan Pembuat Kueri untuk membuat kueri GSI dan salin IndexName yang dihasilkan ke dalam kode SDK Anda. Ganti profil dengan ⌘P ketika indeks ada di satu Wilayah tetapi tidak di Wilayah lain. Pengaturan: Sambungkan ke AWS, Instal.
Sumber
- Mengelola Indeks Sekunder Global di DynamoDB (diverifikasi 13-07-2026)
- Kueri — Referensi Amazon DynamoDB API (diverifikasi 13-07-2026)
Kesalahan terkait
- ResourceNotFoundException — seluruh tabel (bukan hanya indeks) tidak dapat ditemukan.
- Kondisi kunci kueri tidak didukung — indeks ada tetapi kondisi kunci Anda salah.
- Contoh kode: Kueri GSI di Node.js — IndexName disambungkan dengan benar.
- Pelajari: GSI vs LSI · GSI pada akhirnya konsisten · Ikhtisar indeks
Referensi
- Mengelola Indeks Sekunder Global di DynamoDB — Panduan Pengembang Amazon DynamoDB
- Kueri — Referensi Amazon DynamoDB API
- Penanganan kesalahan dengan DynamoDB — Panduan Pengembang Amazon DynamoDB
Terakhir diverifikasi 13-07-2026 terhadap dokumentasi resmi AWS yang ditautkan di atas.