Rumah  >  Artikel  >  pangkalan data  >  Ralat MySQL 1022: Mengapa Saya Mendapat Ralat Kunci Pendua Semasa Mencipta Jadual?

Ralat MySQL 1022: Mengapa Saya Mendapat Ralat Kunci Pendua Semasa Mencipta Jadual?

Patricia Arquette
Patricia Arquetteasal
2024-10-28 04:50:30725semak imbas

  MySQL Error 1022: Why Am I Getting a Duplicate Key Error When Creating a Table?

Ralat MySQL 1022: Menentukan Penduaan

Menghadapi ralat MySQL 1022 semasa mencipta jadual boleh membingungkan, terutamanya jika pernyataan SQL kelihatan sah . Mari kita mendalami isu ini dan mengenal pasti punca asas.

Dalam SQL yang disediakan, dinyatakan bahawa hanya terdapat satu kunci yang ditentukan untuk jadual. Walau bagaimanapun, masalahnya nampaknya terletak pada definisi kunci asing. MySQL membuang ralat 1022 apabila cuba memasukkan kunci pendua semasa pembuatan jadual.

Isu ini berpunca daripada fakta bahawa nama kunci asing (error_id) adalah sama dengan nama kunci asing lain di tempat lain dalam model. Untuk memahami perkara ini, pertimbangkan senario berikut:

  • Jadual "Katalog" mengandungi kunci asing bernama "pembekal" yang merujuk jadual "Pembekal."
  • Jadual "Produk" juga mengandungi kunci asing bernama "pembekal" yang merujuk jadual yang sama "Pembekal."

Kini, jika kedua-dua kunci asing mempunyai nama yang sama ("pembekal"), MySQL mentafsir ini sebagai "perlanggaran" dalam bahasa asing nama kunci. Untuk menyelesaikan masalah, setiap kunci asing perlu mempunyai nama unik dalam keseluruhan skema.

Sebagai contoh, anda boleh menggunakan nama yang berbeza seperti:

  • catalog_supplier untuk kunci asing masuk jadual "Katalog"
  • pembekal_produk untuk kunci asing dalam jadual "Produk"

Dengan membezakan nama kunci asing, MySQL boleh membezakan antara mereka dan mengendalikan integriti rujukan dengan betul semasa mencipta jadual .

Atas ialah kandungan terperinci Ralat MySQL 1022: Mengapa Saya Mendapat Ralat Kunci Pendua Semasa Mencipta Jadual?. 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