The provided expression refers to an attribute that does not exist in the item

TL;DR — UpdateExpression'ınız, öğede bulunmayan bir özniteliği okuyor — bir aritmetik işlenen (score hiç ayarlanmamışken SET score = score + :inc), başka bir öznitelikten kopya (SET a = b) ya da liste işleneni eksik olan bir list_append. Okumayı if_not_exists ile koruyun ya da öğe oluşturulurken özniteliği tohumlayın. (Üst map'i eksik olan yuvalanmış bir yola yazmak, ayrı "document path invalid for update" hatasını fırlatır.)

Ne anlama gelir

ValidationException: The provided expression refers to an attribute
that does not exist in the item

Bu bir HTTP 400 ValidationException'dır. İstek düzgün ayrıştırıldı ama DynamoDB onu öğeye karşı değerlendirdiğinde, ifadenizin okuduğu bir öznitelik — +/- işleneni, bir SET a = b kopyasının kaynağı ya da bir list_append argümanı — orada değil, bu yüzden işlenen çözümlenemez. İstemci tarafında ve yeniden denenebilir değildir: aynı öğe + ifade onu yeniden üretir.

Neden olur

  • Ayarlanmamış bir öznitelik üzerinde aritmetikscore hiç başlatılmamışken SET score = score + :inc fırlatır; belgelerin artırma/azaltma söz dizimi mevcut bir sayısal öznitelik üzerinde çalışır.
  • Eksik bir öznitelikten kopyalama — öğenin email'i yokken SET backupEmail = email.
  • Eksik bir listede list_appendtags henüz yokken SET tags = list_append(tags, :more).
  • Yuvalanmış bir yol için yanlış yer tutucu eşlemesi — yalnızca yaprağı ikame etmek yerine tüm noktalı yolu tek bir ExpressionAttributeNames girdisine ("#p": "stats.viewCount") eşlemek; DynamoDB, "stats.viewCount" literalini tek bir öznitelik adı olarak ele alır, ki ifade onu okuduğu anda eksiktir.
  • Bir okuma öznitelik adında bir yazım hatası ya da yanlış büyük/küçük harf — DynamoDB öznitelik adları büyük/küçük harfe duyarlıdır.

Nasıl düzeltilir

  1. Okumayı if_not_exists ile koruyun, böylece öznitelik henüz orada olmasa bile ilk yazma çalışır:
    SET score = if_not_exists(score, :zero) + :inc
    SET tags = list_append(if_not_exists(tags, :emptyList), :more)
  2. Öğe oluşturulurken özniteliği tohumlayın — önceden score: 0, tags: [] yazın, böylece sonraki okumalar her zaman çözümlensin.
  3. Bir yuvalanmış yolda yalnızca yaprağı ikame edin — ifadede noktaları literal tutun: tek bir addaki tüm yol değil, {"#c": "viewCount"} ile SET stats.#c = :v.
  4. Yolun geçerli olduğunu varsaymadan önce bir GetItem ile özniteliğin var olduğunu / yazım + büyük-küçük harfi doğrulayın.
  5. Üst map'i eksik olan bir yuvalanmış alt öğeye mi yazıyorsunuz? Bu, kardeş hatadır — iki adımlı üst-oluşturma deseni için the document path provided in the update expression is invalid for update'a bakın.

Güncellemeyi yazarken öğenin gerçek şeklini önünüzde ister misiniz? DynoTable masaüstü uygulaması her özniteliği (yuvalanmış map'ler ve listeler dahil) gösterir, böylece eksik bir üst yol bir bakışta bellidir.

İ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.