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 table

Mengapa 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 lagiCreateTable pertama berhasil (atau masih CREATING) dan percobaan ulang menemukan nama yang sudah dipakai.
  • Tabrakan lingkungan — dua tahap/environments berbagi akun dan keduanya menginginkan nama tanpa awalan.

Bagaimana cara memperbaikinya

  1. 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/...
  2. 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 dengan TableInUseException; lihat ResourceInUseException untuk sisi CreateTable).

  3. Untuk impor, pilih nama target yang tidak digunakan — ImportTable hanya membuat tabel baru. Untuk memuat data ke dalam tabel yang sudah ada, tulislah dengan BatchWriteItem/PutItem.

  4. Untuk percobaan ulang IaC, impor tabel yang ada ke status tumpukan (atau ganti nama), daripada melawan pembuatannya.

  5. Periksa apa yang sebenarnya adaaws dynamodb list-tables di wilayah yang sama/account menentukan apakah nama tersebut benar-benar gratis.

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

Kesalahan terkait

Referensi

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

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.