DynamoDB: Tabel sudah ada
TL;DR — Operasi ingin membuat tabel targetnya, dan nama sudah digunakan di akun + wilayah ini. Mengembalikan (RestoreTableFromBackup / RestoreTableToPointInTime) membuang TableAlreadyExistsException; CreateTable dan ImportTable melaporkan situasi yang sama seperti ResourceInUseException. Pilih nama target baru — pemulihan dan impor tidak akan pernah dapat ditulis ke tabel yang sudah ada.
Apa artinya
TableAlreadyExistsException: A target table with the specified name already exists
ResourceInUseException: Table already exists: my-table
# what the engine actually returns, reproduced against DynamoDB Local:
ResourceInUseException: Cannot create preexisting tableMengapa itu terjadi
- Memulihkan cadangan atas nama asli — naluri alami ("kembalikan tabel saya") bertabrakan dengan tabel yang masih ada.
- Menjalankan kembali penerapan impor atau IaC — mencoba ulang
ImportTable, atau tumpukan CloudFormation/Terraform/CDK yang mencoba membuat tabel yang sudah ada di luar status tumpukan. - Perlombaan buat lalu coba lagi —
CreateTablepertama berhasil (atau masihCREATING) dan percobaan ulang menemukan nama yang sudah dipakai. - Tabrakan lingkungan — dua tahap/environments berbagi akun dan keduanya menginginkan nama tanpa awalan.
Bagaimana cara memperbaikinya
Pulihkan ke nama baru, lalu potong — pulihkan sebagai
my-table-restored, verifikasi data, kirim ulang aplikasi (atau hapus tabel lama dan pulihkan lagi dengan nama asli setelah hilang):aws dynamodb restore-table-from-backup \ --target-table-name my-table-restored \ --backup-arn arn:aws:dynamodb:...:table/my-table/backup/...Jika Anda ingin mengganti tabel, hapus tabel yang ada terlebih dahulu dan tunggu hingga penghapusan selesai — nama tetap digunakan saat tabel berada dalam status
DELETING(upaya pemulihan kemudian gagal denganTableInUseException; lihat ResourceInUseException untuk sisiCreateTable).Untuk impor, pilih nama target yang tidak digunakan —
ImportTablehanya membuat tabel baru. Untuk memuat data ke dalam tabel yang sudah ada, tulislah denganBatchWriteItem/PutItem.Untuk percobaan ulang IaC, impor tabel yang ada ke status tumpukan (atau ganti nama), daripada melawan pembuatannya.
Periksa apa yang sebenarnya ada —
aws dynamodb list-tablesdi wilayah yang sama/account menentukan apakah nama tersebut benar-benar gratis.Akhiran tabel yang dipulihkan dengan cap tanggal (
orders-20260812-restore) sehingga pemotongan dan pembersihan tidak ambigu.
Ukur di DynoTable
Sebelum cut-over, buka tabel asli dan tabel yang dipulihkan di DynoTable — ganti dengan ⌘K dan periksa item secara berdampingan. Staging (⌘S) memungkinkan Anda menguji penulisan terhadap salinan yang dipulihkan tanpa menyentuh lalu lintas produksi.
Ukur tabel yang dipulihkan dengan kalkulator harga. Beralih akun/Wilayah dengan ⌘P; Uji Koneksi pada Pengaturan → Profil. Lihat Menghubungkan ke AWS dan Instal.
Sumber
- RestoreTableFromBackup — Referensi Amazon DynamoDB API (diverifikasi 13-07-2026)
- CreateTable — Referensi Amazon DynamoDB API (diverifikasi 13-07-2026)
Kesalahan terkait
- ResourceInUseException — rasa
CreateTabledari tabrakan yang sama. - Cadangan tidak ditemukan
- Ekspor memerlukan PITR
- Pelajari: Pencadangan & pemulihan tepat waktu
Referensi
- RestoreTableFromBackup — Referensi Amazon DynamoDB API
- RestoreTableToPointInTime — Referensi Amazon DynamoDB API
- CreateTable — Referensi Amazon DynamoDB API
- Kesalahan validasi impor Amazon S3 — Panduan Pengembang Amazon DynamoDB
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.