ValidationException: Tidak terduga dari sumber
TL;DR — Nama tabel dalam klausa PartiQL FROM Anda berisi karakter yang tidak dapat diterima oleh parser — biasanya berupa tanda hubung. Bungkus nama dalam tanda kutip ganda (SELECT * FROM "my-table"). Tanda kutip tunggal tidak berfungsi: di PartiQL yang dimaksud adalah string literal, bukan pengidentifikasi.
Apa artinya
ValidationException: Unexpected from sourceMengapa itu terjadi
- Nama tabel berisi tanda hubung atau titik —
users-prod,app.events. Pengidentifikasi telanjang tidak dapat membawanya. - Nama tabel yang dihasilkan kerangka kerja — alat yang menambahkan akhiran lingkungan atau tahapan ke nama tabel (misalnya
Todo-dev) adalah cara klasik untuk memasukkan tanda hubung tanpa Anda memilihnya. - Mengkueri indeks tanpa tanda kutip — formulir
"table"."index"memerlukan tanda kutip ganda di kedua bagian. - Kutipan tunggal, bukan ganda —
FROM 'my-table'juga gagal: tanda kutip tunggal menunjukkan string literal di PartiQL, bukan nama.
Bagaimana cara memperbaikinya
Kutip dua kali nama tabel:
SELECT * FROM "users-prod" WHERE pk = 'USER#42'Kutip dua kali kedua bagian saat menanyakan indeks:
SELECT * FROM "users-prod"."email-index" WHERE email = 'ada@example.com'Simpan tanda kutip tunggal untuk nilai string saja — nama dalam tanda kutip ganda, nilai dalam tanda kutip tunggal. Mencampurnya menghasilkan kelas kesalahan parse yang persis seperti ini.
Kutip secara defensif dalam pernyataan yang dihasilkan — jika kode Anda menginterpolasi nama tabel ke dalam PartiQL, selalu berikan tanda kutip ganda; itu valid bahkan ketika nama itu tidak benar-benar membutuhkannya.
Pilih Kueri asli jika memungkinkan. Permintaan
Query/Scanmengabaikan aturan pengenal PartiQL sepenuhnya untuk pembacaan sederhana.
Jalankan di DynoTable
Editor PartiQL PartiQL memberi tanda kutip ganda pada tabel dan nama indeks secara otomatis — jalankan SELECT * FROM "my-table" dengan diagnostik sebaris sebelum Anda menempelkan pernyataan ke dalam kode SDK. Buka tabel dengan ⌘K untuk mengonfirmasi nama tabel yang tepat (termasuk tanda hubung) dari sidebar.
Ketika penguraian PartiQL terus gagal, beralihlah ke Pembuat Kueri untuk permintaan asli yang setara. Peralihan profil (⌘P) dan Uji Koneksi pada Pengaturan → Profil membuat pernyataan tetap mengarah ke tabel kanan. Lihat Menghubungkan ke AWS dan Instal.
Sumber
- Pernyataan pilihan PartiQL untuk DynamoDB (diverifikasi 13-07-2026)
- Tipe data dan aturan penamaan yang didukung (diverifikasi 13-07-2026)
Cara mereproduksinya
Pernyataan PartiQL yang sumber FROMnya bukan nama tabel. Parser menolaknya sebelum mencari tabel, jadi ini direproduksi pada titik akhir mana pun:
await client.send(new ExecuteStatementCommand({Statement: 'SELECT * FROM 123'}));Keluaran nyata:
ValidationException: Unexpected from source
HTTP 400Bandingkan dengan nama yang tidak dikutip tetapi selebihnya valid: SELECT * FROM repro terurai dengan baik dan baru gagal kemudian dengan ResourceNotFoundException jika tabel tersebut tidak ada. Unexpected from source murni merupakan kegagalan parse, jadi bacalah sebagai sinyal sintaks, bukan sinyal tabel yang hilang.
Kesalahan terkait
- DuplikatItemException — PartiQL
INSERTpada kunci yang ada. - ValidationException — kelas pengecualian induk.
- Pelajari: Contoh PartiQL · SQL untuk DynamoDB
Referensi
- Pernyataan pilihan PartiQL untuk DynamoDB — Panduan Pengembang Amazon DynamoDB
- Tipe data dan aturan penamaan yang didukung di Amazon DynamoDB — Panduan Pengembang Amazon DynamoDB
- Penanganan kesalahan dengan DynamoDB — Panduan Pengembang Amazon DynamoDB
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.
Direproduksi 26-07-2026 terhadap DynamoDB Lokal 2.x dengan AWS SDK untuk JavaScript v3.1095.0 — keluaran di atas adalah kata demi kata.