SQL Zweite Tabelle mit Fremdschlüssel erzeugen

Pfandfinder

Lieutenant
Registriert
Nov. 2020
Beiträge
619
ich habe bereits eine MySQL Tabellen namens "eintraege", PK ist "id". Jetzt habe ich die Spalte kategorie_id erzeugt:
Code:
`kategorie_id` int(10) NOT NULL

Mit folgendem Befehl wollte ich jetzt eine neue Tabelle erstellen:
SQL:
CREATE TABLE eintraege_kategorien (
    id int(10) UNSIGNED AUTO_INCREMENT,
    kategorie_id int(10) NOT NULL,
    kategorie_name varchar(255) COLLATE utf8mb4_unicode_ci,
    PRIMARY KEY (id),
    FOREIGN KEY (kategorie_id) REFERENCES eintraege(kategorie_id)
);

Doch es kommt:
Code:
Fehler: 150 "Foreign key constraint is incorrectly formed"

Was ist da falsch ?
 
da kommt das selbe :/ id bei eintraege ist aber auch AUTO_INCREMENT, liegts daran ?
 
Funktioniert hier einwandfrei. Zeig mal das komplette CREATE für die erste Tabelle.
Ergänzung ()

Was soll denn da überhaupt gebaut werden? Wenn es zwei Tabellen "eintraege" und "kategorien" geben soll und diese "eintraege_kategorien" soll eine n:m-Relation bauen, dann gehört da gar keine eigene "id"-Spalte rein.

Andernfalls, wieso "kategorie_id", wenn du dann auf eine Tabelle "eintraege" zeigst? Da sollte der FK tunlichst "eintraege_id" heißen, immer wie die Zieltabelle.
 
Pfandfinder schrieb:
da kommt das selbe :/ id bei eintraege ist aber auch AUTO_INCREMENT, liegts daran ?
Nein, das bedeutet nur, dass neue Einträge in dieser Tabelle automatisch einen hochzählenden Wert in der entsprechenden Spalte bekommen.

Dein Design ist etwas unübersichtlich, kannst du mal konkret beschreiben, was du hier versuchst?
 
  • Gefällt mir
Reaktionen: mental.dIseASe
Zurück
Oben