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-index

Mengapa itu terjadi

  • Salah ketik atau salah huruf — nama indeks peka huruf besar-kecil; GSI1gsi1.
  • Indeks milik tabel berbeda — Anda menyalin IndexName dari skema tabel lain.
  • GSI belum menjadi ACTIVE — indeks sekunder global yang baru dibuat tidak dapat ditanyakan hingga statusnya menjadi CREATING → 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 driftshared-local-instance.db lokal basi yang sudah ada sebelum indeks; membuatnya kembali.

Bagaimana cara memperbaikinya

  1. Cantumkan nama dan status indeks sebenarnya:
    aws dynamodb describe-table --table-name <Table> \
      --query "Table.GlobalSecondaryIndexes[].{Name:IndexName,Status:IndexStatus}"
  2. Salin nama kata demi kata ke IndexName — cocokkan huruf besar dan kecilnya.
  3. Tunggu ACTIVE. Jika GSI adalah CREATING, kueri hanya berfungsi setelah pengisian ulang selesai (DescribeTable menampilkan IndexStatus).
  4. Konfirmasi wilayah + akun dengan aws sts get-caller-identity dan sematkan region klien.
  5. Pada DynamoDB Lokal, hapus file db lokal dan jalankan kembali pengaturan table/index Anda sehingga indeks ada secara lokal.
  6. 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

Kesalahan terkait

Referensi

Terakhir diverifikasi 13-07-2026 terhadap dokumentasi resmi AWS yang ditautkan di atas.

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.