Ich habe das immer erhalten, solange php artisan migrate
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?
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.
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:
Tags und Links php laravel-5 laravel laravel-migrations