Tidak dapat melakukan operasi pada tabel yang tidak ada (DynamoDB Lokal)
TL;DR — Ini adalah kata-kata DynamoDB Lokal untuk ResourceNotFoundException, dan jebakannya adalah "tidak ada" dicakup ke file database yang dibuka instance ini untuk kunci akses + wilayah Anda saat ini. Tanpa -sharedDb, Lokal menyimpan kumpulan tabel separate per kombo kredensial/region — sehingga tabel yang Anda buat dengan CLI tidak terlihat oleh aplikasi Anda. Jalankan Lokal dengan -sharedDb (atau sematkan kredensial dummy + wilayah yang sama di mana saja), dan ingat -inMemory dimulai dengan kosong setiap kali restart.
Apa artinya
ResourceNotFoundException: Cannot do operations on a non-existent tableMengapa itu terjadi
- Credential/region split-brain (klasik). Tanpa
-sharedDb, Lokal DynamoDB menamai file databasenya dengan ID kunci akses dan wilayah setiap permintaan. Oleh karena itu, CLI Anda (--profiledengan kuncilocal, wilayahus-east-1) dan aplikasi Anda (kuncifake, wilayahlocal) akan melihat dua kumpulan tabel berbeda — masing-masing membuat tabel "untuk dirinya sendiri". -inMemory+ restart — mode dalam memori tidak menyimpan apa pun di disk; setiap restart adalah database kosong.- Wadah baru tanpa volume —
docker run amazon/dynamodb-localmulai kosong; tabel dari wadah sebelumnya hilang kecuali Anda memasang penyimpanan-dbPath. - Tabel benar-benar tidak dibuat — skrip pengaturan tidak berjalan, atau dibuat dengan port/instance yang berbeda.
- Kode yang sama menunjuk ke AWS vs Lokal — tabel ada di cloud tetapi tidak di emulator (atau sebaliknya).
Bagaimana cara memperbaikinya
Lihat apa yang dilihat oleh identitas INI — buat daftar tabel dengan kredensial yang tepat/region/endpoint yang digunakan aplikasi Anda:
AWS_ACCESS_KEY_ID=local AWS_SECRET_ACCESS_KEY=local \ aws dynamodb list-tables --endpoint-url http://localhost:8000 --region us-east-1Jika tabelnya hilang di sini tetapi ada "di suatu tempat", itu adalah pelingkupannya.
Jalankan Lokal dengan
-sharedDbsehingga setiap klien berbagi satu database terlepas dari kredensialnya/region:java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb # docker: docker run -p 8000:8000 amazon/dynamodb-local -jar DynamoDBLocal.jar -sharedDbAtau sematkan satu identitas di mana saja —
accessKeyId,secretAccessKey, danregiontiruan yang sama di profil CLI, konfigurasi klien SDK, dan penyiapan pengujian.Bertahan selama restart — lepaskan
-inMemory, atur-dbPath, dan (di Docker) pasang sebagai volume.Buat tabel dalam pengaturan — untuk pengujian, buat tabel (dan tunggu) di bootstrap suite sehingga instance baru tidak akan mengejutkan Anda.
DynoTable + Local
Masalah pelingkupan jauh lebih mudah untuk dilihat daripada disimpulkan. Pasang DynoTable,
tambahkan profil Lokal (Pengaturan → Profil → Tambahkan Profil) dengan titik akhir
http://localhost:8000 dan kunci akses + wilayah yang sama yang digunakan CLI Anda
bandingkan daftar tabel sidebar dengan aws dynamodb list-tables --endpoint-url http://localhost:8000. Kredensial yang tidak cocok membagi tabel menjadi beberapa bagian
File myaccesskeyid_region.db (Menjalankan DynamoDB Lokal).
Setelah -inMemory restart, gunakan DynamoDB JSON converter
untuk memuat ulang perlengkapan.
FAQ
Mengapa DynamoDB Lokal mengatakan tabel tidak ada padahal saya baru membuatnya?
Tanpa -sharedDb, DynamoDB Lokal menyimpan file database terpisah per ID kunci akses dan wilayah, sehingga tabel yang Anda buat dengan CLI tidak dapat dilihat oleh aplikasi Anda jika kredensial atau wilayahnya berbeda. Jalankan Lokal dengan -sharedDb atau sematkan kredensial dan wilayah tiruan yang identik di mana saja.
Mengapa tabel Lokal DynamoDB saya hilang setelah restart?
Dalam mode -inMemory tidak ada yang disimpan di disk, jadi setiap restart adalah database kosong. Kontainer Docker baru tanpa volume terpasang juga mulai kosong. Jatuhkan -inMemory, atur -dbPath, dan pasang sebagai volume untuk mempertahankan tabel.
Kesalahan terkait
- ResourceNotFoundException — varian AWS asli (nama region/account/table salah).
- Tidak dapat terhubung ke DynamoDB Lokal (ECONNREFUSED)
- Port lokal DynamoDB 8000 sedang digunakan
- Pelajari: Menjalankan DynamoDB Lokal · Hubungkan ke Local & LocalStack
Sumber
- Catatan penggunaan lokal DynamoDB — Panduan Pengembang Amazon DynamoDB (diverifikasi 13-07-2026 —
-sharedDb,-inMemory, file DB per kredensial) - Menerapkan DynamoDB secara lokal di komputer Anda — Panduan Pengembang Amazon DynamoDB (diverifikasi 13-07-2026)
- amazon/dynamodb-local — Docker Hub (diverifikasi 13-07-2026)