Legen Sie in MySql einen unbekannten Fremdschlüssel ab

8

Wenn ein Fremdschlüssel ohne Namen erstellt wurde, gibt MySql einen Standardschlüssel aus. Zum Beispiel wird für die Tabelle 'Test' der Fremdschlüssel 'test_ibfk_1' genannt. Wenn ich den Fremdschlüssel unter Verwendung dieses Namens lokal lösche, funktioniert er wie ein Zauber, aber auf dem Entwicklungsserver schlägt er mit Fehlernummer 152 fehl.

Ich weiß, dass bei diesem Namen die Groß- und Kleinschreibung beachtet wird, aber das Ergebnis ist sowohl in Groß- als auch in Kleinbuchstaben dasselbe.

Meine Frage: Ist es sicher, sich auf den Standardnamen zu verlassen, um Einschränkungen zu manipulieren (zumindest in MySql)?

Vielen Dank im Voraus!

    
Ariel Chelsău 13.12.2012, 09:38
quelle

3 Antworten

14

Sie müssen den Namen des Fremdschlüssels kennen. Wenn es ohne Namen erstellt wurde, wird der Name automatisch generiert. Sie sollten Informationen über den Fremdschlüssel erhalten.

Verwenden Sie eine dieser Abfragen, um Fremdschlüsselnamen zu erhalten -

%Vor%

... und verwenden Sie ALTER TABLE <table_name> DROP INDEX <fk_name>; , um den Fremdschlüssel zu löschen.

    
Devart 13.12.2012, 10:03
quelle
3

Sie können den Namen ohne Wissen entfernen, eine Verkettungsabfrage erstellen und automatisch ausführen:

%Vor%

Auf diese Weise brauchen Sie den Namen des Fremdschlüssels nicht zu kennen, Sie brauchen nur den Tabellenname, den Sie entfernen wollen, den Fremdschlüssel, den Datenbanknamen und die Referenztabelle.

    
quelle
0

Eiliger Leser, geh nicht von dieser Antwort weg, nur weil es lang ist. Du wirst keine andere Lösung finden , das verspreche ich :)

Die angenommene Antwort lässt den Schlüssel nicht fallen, er findet nur seinen Namen. Um den Schlüssel mit einem unbekannten Namen zu löschen, müssen Sie vorbereitete Anweisungen verwenden. Die allgemeinste Lösung ist dieses Skript, das Sie mit fünf Variablen anpassen können:

%Vor%     
mircealungu 03.10.2017 09:49
quelle

Tags und Links