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 source

Parser 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 titikusers-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 gandaFROM 'my-table' juga gagal: tanda kutip tunggal menandakan literal string di PartiQL, bukan nama.

Cara memperbaikinya

  1. Beri tanda kutip ganda pada nama tabel:

    SELECT * FROM "users-prod" WHERE pk = 'USER#42'
  2. Beri tanda kutip ganda pada kedua bagian saat mengkueri index:

    SELECT * FROM "users-prod"."email-index" WHERE email = 'ada@example.com'
  3. 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.

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

References

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

Bekerja dengan DynamoDB tanpa Console

DynoTable adalah klien desktop yang cepat untuk DynamoDB — jelajahi tabel, jalankan query gaya SQL, dan edit Item secara lokal.