ValidationException: Unexpected from source
TL;DR — Nama tabel di klausa FROM PartiQL Anda berisi karakter yang tidak akan diterima parser secara telanjang — biasanya tanda hubung. Bungkus nama dengan tanda kutip ganda (SELECT * FROM "my-table"). Tanda kutip tunggal tidak berfungsi: di PartiQL itu berarti literal string, bukan identifier.
Apa artinya
ValidationException: Unexpected from sourceParser PartiQL membaca FROM my-table sebagai identifier my diikuti token yang tak terduga — tanda hubung tidak valid di dalam bare identifier. Nama tabel DynamoDB secara sah dapat berisi -, ., dan _, jadi nama tabel yang sepenuhnya valid tetap dapat tidak dapat di-parse di PartiQL sampai diberi tanda kutip. Hal yang sama berlaku untuk nama yang bertabrakan dengan kata kunci PartiQL.
Mengapa terjadi
- Nama tabel berisi tanda hubung atau titik —
users-prod,app.events. Bare identifier tidak dapat membawanya. - Nama tabel yang dihasilkan framework — tooling yang menambahkan lingkungan atau stage ke nama tabel (mis.
Todo-dev) adalah cara klasik tanda hubung masuk tanpa Anda memilihnya. - Mengkueri index tanpa tanda kutip — bentuk
"table"."index"butuh tanda kutip ganda di sekitar kedua bagian. - Tanda kutip tunggal alih-alih ganda —
FROM 'my-table'juga gagal: tanda kutip tunggal menandakan literal string di PartiQL, bukan nama.
Cara memperbaikinya
Beri tanda kutip ganda pada nama tabel:
SELECT * FROM "users-prod" WHERE pk = 'USER#42'Beri tanda kutip ganda pada kedua bagian saat mengkueri index:
SELECT * FROM "users-prod"."email-index" WHERE email = 'ada@example.com'Simpan tanda kutip tunggal hanya untuk nilai string — nama dalam tanda kutip ganda, nilai dalam tanda kutip tunggal. Mengacaukannya menghasilkan persis kelas kesalahan parse ini.
Beri tanda kutip secara defensif dalam statement yang dihasilkan — jika kode Anda menginterpolasi nama tabel ke PartiQL, selalu keluarkan dengan tanda kutip ganda; ini valid bahkan ketika nama tidak benar-benar membutuhkannya.
Aplikasi desktop DynoTable mengirim workbench SQL untuk DynamoDB yang menangani pemberian tanda kutip identifier untuk Anda, dan DynamoDB Expression Builder menunjukkan permintaan native Query/Scan setara ketika Anda lebih suka menghindari parsing PartiQL sepenuhnya.
Kesalahan terkait
- DuplicateItemException — PartiQL
INSERTpada kunci yang ada. - ValidationException — kelas exception induk.
- Pelajari: PartiQL examples · SQL for DynamoDB
References
- PartiQL select statements for DynamoDB — Amazon DynamoDB Developer Guide
- Supported data types and naming rules in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.