Tidak dapat menjatuhkan indeks yang diperlukan oleh kekangan kunci asing MySQL
P粉882357979
P粉882357979 2023-08-14 13:34:46
0
2
589
<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粉882357979
P粉882357979

membalas semua(2)
P粉056618053

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.

P粉043566314

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 ;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan