Rumah  >  Artikel  >  pangkalan data  >  Mengapa ALTER IGNORE TABLE Masih Mengakibatkan Pelanggaran Kekangan Integriti dalam MySQL?

Mengapa ALTER IGNORE TABLE Masih Mengakibatkan Pelanggaran Kekangan Integriti dalam MySQL?

Linda Hamilton
Linda Hamiltonasal
2024-11-08 11:22:01859semak imbas

Why Does ALTER IGNORE TABLE Still Result in Integrity Constraint Violations in MySQL?

MySQL ALTER IGNORE TABLE Menyebabkan Pelanggaran Kekangan Integriti

Mengubah suai jadual MySQL menggunakan ALTER IGNORE TABLE untuk mengalih keluar nilai pendua sambil menambah kunci unik harus mengelakkan ralat kunci pendua. Walau bagaimanapun, pengguna telah mengalami ralat "Pelanggaran kekangan integriti" walaupun menggunakan bendera IGNORE.

Penjelasan:

Dokumentasi MySQL menyatakan bahawa IGNORE mengarahkan pangkalan data untuk melangkau pendua baris pada kekunci unik semasa operasi ALTER TABLE. Tetapi dalam beberapa kes, terutamanya dengan jadual InnoDB, nampaknya terdapat pepijat dalam sambungan IGNORE yang membawa kepada pelanggaran kekangan integriti.

Penyelesaian:

Untuk menyelesaikan masalah isu, pertimbangkan penyelesaian berikut:

  1. Tukar kepada Enjin MyISAM:

    • Laksanakan pertanyaan ALTER TABLE table ENGINE MyISAM; untuk menukar jadual kepada enjin MyISAM.
  2. Tambah Indeks Unik dengan IGNORE:

    • Laksanakan pertanyaan ALTER IGNORE Jadual JADUAL TAMBAH INDEKS UNIK dupidx (medan); untuk menambah indeks unik sambil mengabaikan pendua.
  3. Tukar Kembali ke InnoDB:

    • Setelah indeks ditambahkan, laksanakan pertanyaan ALTER TABLE table ENGINE InnoDB; untuk mengembalikan jadual kepada enjin InnoDB.

Nota:

  • Penyelesaian ini akan berfungsi jika tiada asing kekangan utama di atas meja. Jika terdapat kekangan, ia mesti dialih keluar buat sementara waktu dan ditambah semula selepas langkah di atas.
  • Penyelesaian mungkin perlu digunakan untuk setiap indeks unik yang ditambahkan pada jadual yang mencetuskan pelanggaran kekangan integriti.

Atas ialah kandungan terperinci Mengapa ALTER IGNORE TABLE Masih Mengakibatkan Pelanggaran Kekangan Integriti 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