The table does not have the specified index

TL;DR — Query/Scan'inizdeki IndexName, o tabloda (bu istemcinin bölgesi + hesabından) yok, yanlış yazılmış ya da GSI hâlâ CREATING ve henüz sorgulanabilir değil. Tam indeks adını ve durumunu DescribeTable ile doğrulayın, sonra çağrıyı düzeltin.

Ne anlama gelir

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

DynamoDB'den belirli bir ikincil indeksi adıyla Query veya Scan etmesini istediniz ve tablo (bu istemcinin gördüğü şekilde) kullanılabilir bir durumda o adla bir indekse sahip değil. Ad/durum doğru olana kadar istemci tarafında ve yeniden denenebilir olmayan bir HTTP 400 ValidationException'dır.

Neden olur

  • Yazım hatası ya da yanlış büyük/küçük harf — indeks adları büyük/küçük harfe duyarlıdır; GSI1gsi1.
  • İndeks farklı bir tabloya aitIndexName'i başka bir tablonun şemasından kopyaladınız.
  • GSI henüz ACTIVE değil — yeni oluşturulmuş bir global ikincil indeks, durumu CREATING → ACTIVE olana kadar sorgulanamaz (önce geri doldurur).
  • Yanlış bölge/hesap — istemci, tablonun (ya da indeksinin) olmadığı bir bölgeyi gösteriyor (eksik bir tabloyla aynı hizalanma sorunu).
  • DynamoDB Local kayması — indeksten önceki bayat bir yerel shared-local-instance.db; yeniden oluşturun.

Nasıl düzeltilir

  1. Gerçek indeks adlarını ve durumunu listeleyin:
    aws dynamodb describe-table --table-name <Table> \
      --query "Table.GlobalSecondaryIndexes[].{Name:IndexName,Status:IndexStatus}"
  2. Adı IndexName'e birebir kopyalayın — büyük/küçük harfi tam eşleştirin.
  3. ACTIVE için bekleyin. GSI CREATING ise, sorgu yalnızca geri doldurma bittiğinde çalışır (DescribeTable, IndexStatus'u gösterir).
  4. aws sts get-caller-identity ile bölge + hesabı doğrulayın ve istemcinin region'ını sabitleyin.
  5. DynamoDB Local'de, yerel db dosyasını silin ve tablo/indeks kurulumunuzu yeniden çalıştırın, böylece indeks yerel olarak var olsun.

Birkaç tablo ve indeks arasında mı çalışıyorsunuz? DynoTable'ın Tablo iletişim kutusu her tablonun GSI'lerini ve durumlarını listeler, böylece adı tahmin etmek yerine gerçekten var olan — ve ACTIVE olan — bir indeksi seçebilirsiniz. Ayrıca, ihtiyaç duyduğunuz indeks gerçekten eksik olduğunda bir GSI oluşturur ve siler.

DynoTable’da sorgula

DynoTable'deki tabloyu ⌘K ile açın ve Dizinler panelini genişletin; her GSI adı ve IndexStatus CLI çağrısı olmadan listelenir. Elle IndexName yazmak yerine sorgu panelindeki açılır menüden dizini seçin; DynoTable yalnızca bağlı tabloda bulunan dizinleri sunar.

GSI hâlâ CREATING ise, durum ACTIVE'e dönene kadar kenar çubuğundan tablo meta verilerini yenileyin. Bir GSI sorgusu oluşturmak ve oluşturulan IndexName değerini SDK kodunuza kopyalamak için Query Builder tuşunu kullanın. Dizin bir Bölgede varken diğerinde yoksa profilleri ⌘P ile değiştirin. Kurulum: Connect to AWS, Install.

Kaynaklar

İlgili hatalar

Kaynaklar

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

Console olmadan DynamoDB ile çalış

DynamoDB’nin çalıştıramadığı gerçek SQL’i çalıştıran hızlı bir DynamoDB masaüstü istemcisi — JOINs, GROUP BY, toplamalar — görsel düzenleme ve kendi Bedrock anahtarların üzerinde bir yapay zekâ aracısıyla.

30 günlük ücretsiz deneme, kredi kartı yok — ardından süre sınırı olmayan Ücretsiz plan.