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

Barbara Streisand
Lepaskan: 2024-10-30 05:48:28
asal
245 orang telah melayarinya

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!