ValidationException: Ekspresi Pembaruan Tidak Valid
TL;DR — UpdateExpression Anda salah format. Sembilan dari sepuluh kata kunci tersebut merupakan kata kunci khusus (seperti status, name, size) yang digunakan secara langsung — tukar dengan #placeholder di ExpressionAttributeNames. Pesan tersebut menyebutkan token yang sebenarnya.
Apa artinya
Pesan umum:
ValidationException: Invalid UpdateExpression: Attribute name is a reserved keyword; reserved keyword: status
ValidationException: Invalid UpdateExpression: Syntax error; token: "=", near: "SET status ="
ValidationException: Invalid UpdateExpression: An expression attribute value used in expression is not defined; attribute value: :sDynamoDB mengurai string ekspresi dan menolak apa pun yang bukan tata bahasa yang valid atau yang mereferensikan placeholder yang tidak terdefinisi.
Mengapa itu terjadi
- Kata kunci khusus digunakan mentah. DynamoDB memiliki ratusan kata khusus —
status,name,size,count,data,year. Digunakan langsung dalam sebuah ekspresi, kata-kata itu menyebabkan kesalahan sintaks. Pemeriksa kata khusus menguji nama atribut Anda terhadap daftar lengkap dan menghasilkan peta aliasnya. - Entri
ExpressionAttributeNameshilang untuk#nameyang Anda referensikan. - Entri
ExpressionAttributeValueshilang untuk:valueyang Anda referensikan. - Tata bahasa kata kerja salah — mencampur klausa secara tidak benar (
SET,REMOVE,ADD,DELETEmasing-masing memiliki sintaksnya sendiri), atau=yang menyimpang. - Nama atribut dengan karakter khusus (titik, tanda hubung) digunakan tanpa placeholder.
Bagaimana cara memperbaikinya
- Beri alias pada setiap nama atribut melalui
ExpressionAttributeNames(#status) — cara ini melewati daftar kata khusus sepenuhnya, jadi memberi alias pada semuanya adalah kebiasaan yang aman. - Definisikan setiap
:valueyang Anda referensikan diExpressionAttributeValues. - Gunakan klausa yang tepat.
SETuntuk menulis/menimpa,REMOVEuntuk menghapus atribut,ADDuntuk penambahan angka/set atomik,DELETEuntuk menghapus dari sebuah set. - Jalankan pemeriksaan kata khusus sebelum Anda merilis. Tempelkan nama atribut Anda ke pemeriksa kata khusus — alat itu menandai setiap nama pada daftar AWS dan mencetak peta
#aliasyang Anda perlukan. - Bangun ekspresi sekali, salin ke mana-mana. String yang diedit dengan tangan akan menyimpang; hasilkan
UpdateExpressionlengkap beserta kedua peta atribut dari satu sumber sehingga placeholder tetap berpasangan.
Contoh
import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
import {DynamoDBDocumentClient, UpdateCommand} from '@aws-sdk/lib-dynamodb';
const doc = DynamoDBDocumentClient.from(new DynamoDBClient({}));
await doc.send(
new UpdateCommand({
TableName: 'Orders',
Key: {pk: 'ORDER#1'},
// #status aliases the reserved word "status"
UpdateExpression: 'SET #status = :s, updatedAt = :t',
ExpressionAttributeNames: {'#status': 'status'},
ExpressionAttributeValues: {':s': 'SHIPPED', ':t': Date.now()}
})
);Cek dulu di DynoTable
Ketika sebuah pembaruan gagal di aplikasi Anda, reproduksi dulu di DynoTable sebelum Anda mengubah kode produksi. Buka tabel dengan ⌘K, pilih itemnya, dan gunakan editor pembaruan sebaris — DynoTable memberi alias pada nama atribut khusus secara otomatis dan menampilkan UpdateExpression yang dihasilkan beserta kedua peta atribut. Staging (⌘S) memungkinkan Anda meninjau suntingan dan menangkap kesalahan sintaks sebelum di-commit.
Untuk perbaikan massal, tempelkan ekspresi yang gagal ke Expression Builder dan bandingkan keluarannya dengan apa yang dikirim SDK Anda. Pergantian profil (⌘P) menjaga uji coba tetap pada akun yang sama dengan sumber kesalahan; gunakan Uji Koneksi pada Pengaturan → Profil untuk memastikan profilnya cocok. Lihat Menghubungkan ke AWS dan Instal untuk penyiapan profil. Periksa silang nama atribut di pemeriksa kata khusus ketika pesan kesalahan menyebut token tertentu seperti status atau data. Memberi alias pada setiap nama atribut — bukan hanya yang khusus — adalah kebiasaan aman yang mencegah kelas kesalahan ini sepenuhnya.
Sumber
- Menggunakan ekspresi pembaruan di DynamoDB (diverifikasi 13-07-2026)
- Kata khusus di DynamoDB (diverifikasi 13-07-2026)
Kesalahan terkait
- ExpressionAttributeValues berisi nilai yang tidak valid
- ValidationException (ikhtisar)
- Contoh kode: UpdateItem di Node.js · di Python (boto3) — sebuah UpdateExpression valid dengan #names dan :values.
- Pelajari: Ekspresi pembaruan · Nama & nilai ekspresi
Referensi
- Menggunakan ekspresi pembaruan di DynamoDB — Panduan Pengembang Amazon DynamoDB
- Kata khusus di DynamoDB — Panduan Pengembang Amazon DynamoDB
- Nama atribut ekspresi (alias) di DynamoDB — Panduan Pengembang Amazon DynamoDB
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.