Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Anda Boleh Membetulkan Rekod Pendua Selepas Mencipta Indeks Bukan Unik dalam MySQL?

Bagaimanakah Anda Boleh Membetulkan Rekod Pendua Selepas Mencipta Indeks Bukan Unik dalam MySQL?

Barbara Streisand
Barbara Streisandasal
2024-10-30 05:48:28246semak imbas

How Can You Fix Duplicate Records After Creating a Non-Unique Index in MySQL?

Memelihara Integriti Data dengan Indeks Unik

Dalam pangkalan data anda, anda bertujuan untuk menghalang rekod pendua dengan mencipta indeks unik pada medan A, B, C dan D. Walau bagaimanapun, anda tersilap mencipta indeks biasa sebaliknya, membawa kepada sisipan pendua. Dengan 20 juta rekod yang dipertaruhkan, anda sememangnya teragak-agak untuk membuat perubahan.

Mengendalikan Rekod Pendua dengan Indeks Unik

Apabila anda menukar indeks sedia ada kepada indeks unik atau menambah yang baharu, Tingkah laku MySQL bergantung pada sama ada terdapat pendua:

  • JADUAL ALTER Normal: Jika pendua wujud, operasi gagal dengan Ralat 1062 (kunci pendua).
  • ALTER TABLE dengan IGNORE (hanya sebelum MySQL 5.7.4): Mengalih keluar pendua tetapi tidak menyatakan baris mana yang dikekalkan.
  • MySQL 5.7.4 atau lebih baru: The IGNORE klausa dialih keluar dan menggunakannya mengakibatkan ralat.

Penyelesaian Langkah demi Langkah

Untuk menangani isu ini dalam MySQL 5.7.4 atau lebih baharu, ikut langkah berikut:

  1. Salin data ke dalam jadual sementara.
  2. Potong jadual asal.
  3. Buat INDEKS UNIK pada lajur yang dikehendaki.
  4. Salin data kembali ke dalam jadual asal menggunakan INSERT IGNORE.
  5. Lepaskan jadual sementara.

Kaedah ini berkesan mengalih keluar pendua sambil mengekalkan data yang tinggal.

Penyelesaian Ganti untuk MySQL Before 5.7.4

Untuk versi MySQL sebelum 5.7.4, anda boleh menggunakan klausa IGNORE dalam pernyataan ALTER TABLE anda untuk mengalih keluar pendua tanpa menyatakan baris mana yang dikekalkan. Walau bagaimanapun, anda mungkin mahu memastikan anda mempunyai sandaran data anda sebelum mencuba operasi ini.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Membetulkan Rekod Pendua Selepas Mencipta Indeks Bukan Unik dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn