Die folgende create-Anweisung zeigt die aktuelle Struktur einer meiner MariaDB-Tabellen.
%Vor%Ich muss den eindeutigen Index entfernen, aber der Versuch, einen der beiden Schlüssel zu löschen, schlägt fehl.
%Vor%/ * SQL-Fehler (1553): Der Index 'userId_councilId' kann nicht gelöscht werden: benötigt in einer Fremdschlüssel-Einschränkung * /
%Vor%/ * SQL Error (1553): Der Index 'council_user_council_foreign' kann nicht gelöscht werden: benötigt in einem Fremdschlüssel-Constraint * /
Das Entfernen aller Tabellenzeilen hilft auch nicht. Wenn jedoch eine neue Tabelle von dem obigen Skript erstellt wird, wird das Problem nicht auftreten.
Sie müssen zuerst die FOREIGN KEY-Einschränkung löschen, dann den Index löschen und den FOREIGN-Schlüssel neu erstellen.
18:18:46 Ort ALTER TABLE DROP INDEX eindeutiger_name_zu_versorger Fehler Code: 1553. Der Index 'unique_name_to_supplier' kann nicht gelöscht werden: benötigt in a Fremdschlüsseleinschränkung 0,063 sec
Dies bedeutet, dass Sie versuchen, den für FK verwendeten Index zu löschen.
MySQL benötigt Indizes für Fremdschlüssel und referenzierte Schlüssel Fremdschlüsselprüfungen können schnell sein und erfordern keinen Tabellenscan. In dem Referenztabelle, muss ein Index den Fremdschlüssel enthalten Spalten werden als erste Spalten in derselben Reihenfolge aufgeführt. So ein Der Index wird automatisch in der referenzierenden Tabelle erstellt, wenn dies nicht der Fall ist existieren. Dieser Index wird möglicherweise später automatisch gelöscht, wenn Sie ihn erstellen ein weiterer Index, mit dem die Fremdschlüsseleinschränkung erzwungen werden kann. index_name, falls angegeben, wird wie zuvor beschrieben verwendet.
Um zu beheben, brauchen Sie:
1. Los von FK
2. Entfernen Sie den Index selbst
3. Erzeuge FK erneut
Hier sind die Befehle:
%Vor%vollständiges SQL-Protokoll:
%Vor%Sie müssen zuerst die Bedingung für den Fremdschlüssel löschen und das
%Vor%und dann können Sie den Index löschen
Tags und Links mysql foreign-keys