Probleme mit Foreign Keys

Tattoofreak

Benutzer
Beiträge
6
Hallo liebe DB-Gmeinde

Heute werde ich als Datenbank-Neuling entjungfert und stosse bereits auf erste Probleme bezüglich Foreign-Keys. Kann mir jemand einen Tip geben, warum der unten stehende Fehler auftritt? Ich bin nach Anleitung in einem Lehrbuch vorgegangen und finde den Fehler einfach nicht.
Wenn ich z.B. "ON DELETE RESTRICT" lösche, dann verschwindet das rote "X", aber der Fehler "Cannot add foreign key constraint" beim Ausführen wird trotzdem angezeigt. Ich habe also eigentlich zwei Probleme, bei welchen ich nicht weiter weiss.
Vielen Dank im Voraus für Eure Unterstützung!Unbenannt.PNG
 
Werbung:
Kann mir jemand einen Tip geben, warum der unten stehende Fehler auftritt?

Du kannst nur auf Tabellen verweisen, die schon existieren.

Andere Datenbanken geben sinnvolle Fehlermeldungen:

Code:
test=# create table xyz(i int references xxyyzz);
ERROR:  relation "xxyyzz" does not exist

Mein Tipp: nehme als Anfänger eine andere DB, Du wirst mit PostgreSQL deutlich mehr Spaß und Erfolg haben als mit MySQL.
 
Hy akretschmer

Besten Dank für die schnelle Antwort. Leider bin ich an mySQL gebunden, da wir das in der Schule durchnehmen und ich am Ende der Ausbildung auf mySQL eine Abschlussprüfung abegen muss.
Also muss ich nur die Reihenfolge ändern? Sprich: Die Tabelle "adresse" zuerst erstellen?
 
Kinder? Ich bin 33 Jahre :D Bingo, der Fehler ist jetzt weg und das Programm wird ausgeführt, vielen Dank! Nur das rote "X" geht nicht weg, woran kann das liegen? Kann ich das ignorieren, wenn der Programmablauf keinen Fehler bringt?
 
Kinder? Ich bin 33 Jahre :D Bingo, der Fehler ist jetzt weg und das Programm wird ausgeführt, vielen Dank! Nur das rote "X" geht nicht weg, woran kann das liegen? Kann ich das ignorieren, wenn der Programmablauf keinen Fehler bringt?

Rotes X? Gibt es nicht in SQL. Vielleicht spinnt die GUI, vielleicht gibt es eine Warnung. Danach kann man dann auch googeln, aber google mal nach rotem X ...
 
Schau mal auf das Bild, welches ich gepostet habe (Zeile 17). Da siehst du das rote X. Es erscheint dann, wenn der Code nicht als solcher erkannt wird. Solange ich z.B. eine Zeile nicht zu Ende getippt habe, erscheint die ganze Zeit das rote X. Sobald die Zeile korrekt als fehlerloser Code erkannt wird, verschwindet es. Normalerweise kann ich das Programm auch nicht fehlerfrei ausführen, solange ein rotes X da ist, aber in meinem Fall klappt es trotzdem.
 
Seltsam. Trotz der Beschreibung funktioniert der Code tadellos. Auch das Lupen-Blitzzeichen findet keinen Fehler. Vielleicht stelle ich den Fehler beim Befüllen der Tabellen fest. Ich frag dann mal den Lehrer. Auf jeden Fall herzlichen Dank für Deine Hilfe, akretschmer! Hast mir sehr geholfen!
 

Anhänge

  • Unbenannt.PNG
    Unbenannt.PNG
    99,6 KB · Aufrufe: 3
Seltsam. Trotz der Beschreibung funktioniert der Code tadellos. Auch das Lupen-Blitzzeichen findet keinen Fehler. Vielleicht stelle ich den Fehler beim Befüllen der Tabellen fest. Ich frag dann mal den Lehrer. Auf jeden Fall herzlichen Dank für Deine Hilfe, akretschmer! Hast mir sehr geholfen!

Wenn das da ein select * sein soll dann ist das zwar kein Fehler, aber schlechter Code. Nenne alle Spalten in der Select-Liste anstatt des Catch-All - Platzhalters *, das spart Dir auf lange Sicht andere Probleme.

Frag mal Deinen Lehrer, warum als Lehr-System eine vor Fehlern nur so strotzende Datenbank gewählt wurde - MySQL verstößt an sehr, sehr vielen Stellen gegen die geltenden SQL-Normen.
 
Werbung:
Das ist nicht mein Code, das habe ich bei Google gefunden. Ist nur ein Beispiel für das rote X :)
Wenn Du den Typen selbst erleben würdest, dann wüsstest Du warum...da genügen schon 5min. Gespräch mit ihm. Leider sind wir ihm, seinem Lehrplan und seiner bescheuerten Art zu unterrichten ausgeliefert. Ein bisschen total unverständliche Theorie an der Wandtafel, ein Buch hingeknallt (welches sehr zu wünschen übrig lässt) und den Rest dürfen wir zu Hause machen :-(
 
Zurück
Oben