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 source

Mengapa itu terjadi

  • Nama tabel berisi tanda hubung atau titikusers-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 gandaFROM 'my-table' juga gagal: tanda kutip tunggal menunjukkan string literal di PartiQL, bukan nama.

Bagaimana cara memperbaikinya

  1. Kutip dua kali nama tabel:

    SELECT * FROM "users-prod" WHERE pk = 'USER#42'
  2. Kutip dua kali kedua bagian saat menanyakan indeks:

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

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

  5. Pilih Kueri asli jika memungkinkan. Permintaan Query/Scan mengabaikan 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

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 400

Bandingkan 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

Referensi

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.

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.