1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Foreign Key Mismatch ...

Dieses Thema im Forum "SQLite" wurde erstellt von Zahlhirte, 1 November 2018.

  1. Zahlhirte

    Zahlhirte Benutzer

    Hey Lieber Leser,

    habe ein kleines Problem und bin anscheinend zu Blind um den Fehler zu sehen:

    Ich habe zwei Tabellen

    Haus und Bewohner

    und die Bewohner sind von der HausNr. "Abhängig" sprich FK,
    während ich die Tabelle Haus, mit so viel Datensätzen befüllen kann wie ich lustig bin, bekomme ich bei Bewohner keinen Einzigen hin:

    z.B.

    Die Tabelle Haus:
    HausNr. Name
    1 Gruen
    2 Blau

    Und bei Tabelle Bewohner soll stehen:

    Name WohntIn
    Schulz 1

    geht aber nicht und ich sehe nicht weshalb.


    CREATE TABLE Haus (

    HausNr INTEGER,

    Name UNIQUE

    );

    CREATE TABLE Bewohner (

    Name VARCHAR,

    WohntIn NOT NULL

    REFERENCES Haus (HausNr) ON DELETE CASCADE

    ON UPDATE NO ACTION

    );
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Also ich sehe erst einmal Syntaxfehler:

    Code:
    test=# CREATE TABLE Haus (
    test(#
    test(# HausNr INTEGER,
    test(#
    test(# Name UNIQUE
    test(#
    test(# );
    FEHLER:  Syntaxfehler bei »UNIQUE«
    LINE 3: Name UNIQUE
                 ^
    test=*# CREATE TABLE Haus (
    HausNr INTEGER,
    Name text UNIQUE
    );
    CREATE TABLE
    test=*#     CREATE TABLE Bewohner (
    test(#
    test(#     Name VARCHAR,
    test(#
    test(#     WohntIn NOT NULL
    test(#
    test(#     REFERENCES Haus (HausNr) ON DELETE CASCADE
    test(#
    test(#     ON UPDATE NO ACTION
    test(#
    test(#     );
    FEHLER:  Syntaxfehler bei »NOT«
    LINE 3:     WohntIn NOT NULL
                        ^
    test=*#     
    test=*#
    test=*#     CREATE TABLE Bewohner (
        Name VARCHAR,
        WohntIn text NOT NULL
        REFERENCES Haus (HausNr) ON DELETE CASCADE
        ON UPDATE NO ACTION
        );
    FEHLER:  in Tabelle »haus«, auf die verwiesen wird, gibt es keinen Unique-Constraint, der auf die angegebenen Schlüssel passt
    test=*#
    
    
    Nach Korrektur der zwei Syntaxfehler (Datentyp vergessen) der nächste Fehler.

    tl;dr

    es ist nicht hilfreich, kaputtes SQL zu zeigen (und zu suggerieren, daß die Tabellen so erstellt wurden), und Dein "während ich die Tabelle Haus, mit so viel Datensätzen befüllen kann wie ich lustig bin, bekomme ich bei Bewohner keinen Einzigen hin:" ist alles mögliche (z.B. Müll), aber definitiv keine sinnvolle Fehlerbeschreibung.

    Vielleicht machst Du es demnächst deinen potentiellen Helfern einfacher, indem Du

    • nachvollziehbar zeigst, was Du hast
    • erklärst, was Du willst
    • zeigst, was Du versucht hast
    • und welche exakten Fehler da kamen
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden