Löschen eindeutiger Index Laravel 5

8

Ich habe das immer erhalten, solange php artisan migrate

läuft
  

SQLSTATE [42000]: Syntaxfehler oder Zugriffsverletzung: 1091 DROP E-Mail nicht möglich; Überprüfen Sie, ob die Spalte / der Schlüssel vorhanden ist

Ich sehe zwar, dass die E-Mail in meiner Datenbank existiert.

Mein Migrationsskript. Ich habe versucht, die eindeutige Einschränkung fallen zu lassen.

%Vor%

Habe ich vergessen, irgendwelche Caches zu löschen?

Irgendwelche Hinweise für mich?

    
ihue 20.03.2016, 01:47
quelle

2 Antworten

20

Wenn Sie Indizes löschen, erwartet Laravel, dass der vollständige Name des Indexes angegeben wird.

Sie können Ihre Datenbank nach dem vollständigen Namen des Indexes durchsuchen, aber wenn der Schlüssel von einer vorherigen Laravel-Migration generiert wurde, sollte sein Name einer einfachen Namenskonvention entsprechen.

Was die Dokumentation zu ihrer Namenskonvention sagt (ab v5.2) :

  

Standardmäßig weist Laravel den Indizes automatisch einen sinnvollen Namen zu. Verknüpfen Sie einfach den Tabellennamen, den Namen der indizierten Spalte und den Indextyp.

Ich schätze, deshalb erhalten Sie einen Fehler. Es gibt keinen email index, aber es gibt wahrscheinlich einen guests_email_unique index.

Geben Sie dieser Migration einen Screenshot:

%Vor%

Ich verstehe, dass es etwas verwirrend ist, dass Sie beim Erstellen eines Index die Spaltennamen angeben, aber wenn Sie den Index später löschen, müssen Sie den vollständigen Namen des Index angeben.

Bitte beachten Sie, dass ich auch die down() -Methode angepasst habe, so dass sie den eindeutigen Index wieder zurückgibt, indem Sie ihn zurückfügt.

    
stratedge 20.03.2016, 02:00
quelle
9

Nach offizielle Dokumentation Sie können Folgendes sehen:

  

Wenn Sie ein Array von Spalten an eine Methode übergeben, die Indizes löscht, wird die   Der herkömmliche Indexname wird basierend auf dem Tabellennamen generiert.   Spalten und Schlüsseltyp:

%Vor%



Sie können es einfach mit [] um den Feldnamen löschen:

%Vor%     
num8er 28.12.2016 21:58
quelle