Rumah >pangkalan data >tutorial mysql >Mengapa Saya Tidak Boleh Menggugurkan Jadual dengan Kekangan Utama Asing Menggunakan Berbilang Pertanyaan?

Mengapa Saya Tidak Boleh Menggugurkan Jadual dengan Kekangan Utama Asing Menggunakan Berbilang Pertanyaan?

Linda Hamilton
Linda Hamiltonasal
2024-11-04 17:32:021033semak imbas

Why Can't I Drop a Table with Foreign Key Constraints Using Multiple Queries?

Kekangan Kunci Asing Bogus Gagal

Apabila cuba menjatuhkan jadual bernama kawasan daripada pangkalan data, mesej ralat ditemui yang menunjukkan kunci asing kegagalan kekangan. Walaupun telah menjatuhkan semua jadual lain yang mempunyai hubungan utama asing dengan kawasan, kekangan itu terus berterusan.

Sebab Kemungkinan

InnoDB, enjin storan yang digunakan oleh pangkalan data, lazimnya tidak membenarkan kunci asing merujuk jadual di luar skema semasa. Oleh itu, adalah membingungkan mengapa kekangan utama asing masih menghalang pemadaman jadual kawasan.

Penyelesaian

Setelah siasatan lanjut, didapati bahawa alat pangkalan data tertentu, seperti MySQL Query Browser atau phpMyAdmin, buka sambungan baharu untuk setiap pertanyaan. Tingkah laku ini menghalang penyebaran perubahan merentas berbilang pertanyaan. Untuk menyelesaikan isu ini, adalah perlu untuk melaksanakan semua penyata drop dalam satu pertanyaan:

SET FOREIGN_KEY_CHECKS=0;  -- Disable foreign key checks
DROP TABLE my_first_table_to_drop;
DROP TABLE my_second_table_to_drop;
SET FOREIGN_KEY_CHECKS=1;  -- Re-enable foreign key checks

Melumpuhkan semakan kunci asing membolehkan pemadaman jadual yang terlibat dalam perhubungan kunci asing tanpa mencetuskan ralat kekangan. Pembolehan semula semakan kunci asing seterusnya memastikan integriti pangkalan data untuk operasi masa hadapan.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggugurkan Jadual dengan Kekangan Utama Asing Menggunakan Berbilang Pertanyaan?. 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