Mengapa ALTER IGNORE TABLE Masih Membuang Ralat 'Entri Pendua' dalam MySQL?

Patricia Arquette
Lepaskan: 2024-11-08 02:29:02
asal
373 orang telah melayarinya

Why Does ALTER IGNORE TABLE Still Throw a

MySQL: ALTER IGNORE TABLE Meningkatkan "Integriti Kekangan Pelanggaran" Walaupun Dokumentasi

Dokumentasi MySQL dengan jelas menyatakan bahawa menggunakan ALTER IGNORE TABLE, apabila digabungkan dengan KUNCI UNIK, harus membenarkan pengalihan keluar pendua dengan mengatasi sebarang ralat kunci pendua. Walau bagaimanapun, dalam amalan, pengguna telah menemui mesej ralat berterusan "#1062 - Entri pendua 'blabla' untuk kunci 'dupidx'".

Tingkah laku ini nampaknya disebabkan oleh pepijat dalam versi InnoDB MySQL pada versi tertentu. Khususnya, sambungan kata kunci IGNORE tidak berfungsi seperti yang diharapkan dalam konteks InnoDB.

Penyelesaian:

Untuk memintas isu ini, pengguna boleh menggunakan penyelesaian berikut:

  1. Tukar jadual kepada MyISAM menggunakan: ALTER TABLE table ENGINE MyISAM;
  2. Gunakan arahan ALTER IGNORE TABLE dengan UNIQUE INDEX: ALTER IGNORE TABLE table ADD UNIQUE INDEX dupidx (medan);
  3. Tukar jadual kembali kepada InnoDB menggunakan: ALTER TABLE table ENGINE InnoDB;

Nota: Jika jadual mengandungi kekangan Foreign Key, alih keluar dan tambah semulanya akan diperlukan untuk memastikan integriti data.

Atas ialah kandungan terperinci Mengapa ALTER IGNORE TABLE Masih Membuang Ralat 'Entri Pendua' 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