Rumah  >  Soal Jawab  >  teks badan

Tidak dapat menjatuhkan indeks yang diperlukan oleh kekangan kunci asing MySQL

<p>Saya perlu mengubah suai pangkalan data sedia ada saya untuk menambah lajur. Oleh itu, saya juga ingin mengemas kini medan UNIK untuk memasukkan lajur baharu itu. Saya cuba menggugurkan indeks semasa, tetapi saya terus mendapat mesej ralat <kod>MySQL Tidak boleh menjatuhkan indeks yang diperlukan dalam kekangan kunci asing</code></p> <pre class="brush:php;toolbar:false;">BUAT JADUAL mytable_a ( ID TINYINT BUKAN NULL AUTO_INCREMENT KUNCI UTAMA, Nama VARCHAR(255) BUKAN NULL, UNIK(Nama) ) ENJIN=InnoDB; CIPTA JADUAL mytable_b ( ID TINYINT BUKAN NULL AUTO_INCREMENT KUNCI UTAMA, Nama VARCHAR(255) BUKAN NULL, UNIK(Nama) ) ENJIN=InnoDB; CIPTA JADUAL mytable_c ( ID TINYINT BUKAN NULL AUTO_INCREMENT KUNCI UTAMA, Nama VARCHAR(255) BUKAN NULL, UNIK(Nama) ) ENJIN=InnoDB; CIPTA JADUAL `mytable` ( `ID` int(11) BUKAN NULL AUTO_INCREMENT, `BANTUAN` tinyint(5) BUKAN NULL, `BID` tinyint(5) BUKAN NULL, `CID` tinyint(5) BUKAN NULL, KUNCI UTAMA (`ID`), KUNCI UNIK `BANTUAN` (`BANTUAN`,`BID`,`CID`), KEY `BID` (`BID`), KEY `CID` (`CID`), KEKANGAN `mytable_ibfk_1` FOREIGN KEY (`AID`) RUJUKAN `mytable_a` (`ID`) PADA DELETE CASCADE, KEKANGAN `mytable_ibfk_2` KUNCI ASING (`BID`) RUJUKAN `mytable_b` (`ID`) PADA DELETE CASCADE, KEKANGAN `mytable_ibfk_3` FOREIGN KEY (`CID`) RUJUKAN `mytable_c` (`ID`) ON DELETE CASCADE ) ENJIN=InnoDB; mysql> ALTER TABLE mytable DROP INDEX AID; RALAT 1553 (HY000): Tidak boleh menjatuhkan indeks 'BANTUAN': diperlukan dalam kekangan kunci asing</pre> <p><br /></p>
P粉882357979P粉882357979432 hari yang lalu537

membalas semua(2)saya akan balas

  • P粉056618053

    P粉0566180532023-08-15 11:27:29

    Langkah 1

    Senaraikan kunci asing (perhatikan bahawa ia berbeza daripada nama indeks)

    SHOW CREATE TABLE  <表名>

    Hasilnya akan menunjukkan nama kunci asing.

    Format:

    CONSTRAINT `FOREIGN_KEY_NAME` FOREIGN KEY (`FOREIGN_KEY_COLUMN`) REFERENCES `FOREIGN_KEY_TABLE` (`id`),

    Langkah 2

    Padam (kunci asing/kunci utama/kunci)

    ALTER TABLE <表名> DROP FOREIGN KEY <外键名称>

    Langkah 3

    Padam indeks.

    balas
    0
  • P粉043566314

    P粉0435663142023-08-15 00:33:14

    Anda perlu memadamkan kunci asing. Dalam MySQL, kunci asing secara automatik mencipta indeks pada jadual (soalan SO ini adalah mengenai topik ini).

    ALTER TABLE mytable DROP FOREIGN KEY mytable_ibfk_1 ;

    balas
    0
  • Batalbalas