Es ist nicht möglich, Indizes zu entfernen

8

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.

    
PHPst 04.07.2016, 06:56
quelle

3 Antworten

5

Sie müssen zuerst die FOREIGN KEY-Einschränkung löschen, dann den Index löschen und den FOREIGN-Schlüssel neu erstellen.

    
Aleksey Ratnikov 13.07.2016 15:24
quelle
4
  

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%     
Maksym Semenykhin 13.07.2016 15:25
quelle
4

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

    
Waqar Haider 16.07.2016 08:48
quelle

Tags und Links