tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
1855
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Nambot Nambot ist offline Mitglied Bronze
    Registriert seit
    May 2004
    Beiträge
    44
    Hi!
    Ich hantiere zum ersten Mal mit "Foreign Keys" und "CASCADE" und den ganzen Sachen, habe allerdings gleich ein Problem.
    Das Datenbanklayout sieht folgendermaßen aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    CREATE TABLE
        group
            (id INT AUTO_INCREMENT,
            name VARCHAR(255) UNIQUE,
            description TEXT,
            created_at DATETIME,
            updated_at DATETIME,
            PRIMARY KEY(id))
        ENGINE = INNODB;
    CREATE TABLE
        group_permission
            (group_id INT,
            permission_id INT,
            created_at DATETIME,
            updated_at DATETIME,
            PRIMARY KEY(group_id, permission_id))
        ENGINE = INNODB;
    CREATE TABLE
        permission
            (id INT AUTO_INCREMENT,
            name VARCHAR(255) UNIQUE,
            description TEXT,
            created_at DATETIME,
            updated_at DATETIME,
            PRIMARY KEY(id))
        ENGINE = INNODB;
     
    ALTER TABLE group_permission ADD FOREIGN KEY (permission_id) REFERENCES permission(id) ON DELETE CASCADE;
    ALTER TABLE group_permission ADD FOREIGN KEY (group_id) REFERENCES group(id) ON DELETE CASCADE;
    So wenn ich jetzt in die Tabelle "group_permission" einen neuen Eintrag mahcen will bekomme ich folgenden Fehler:
    Code :
    1
    
    Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`sf_test/sf_guard_group_permission`, CONSTRAINT `sf_guard_group_permission_ibfk_1` FOREIGN KEY (`permission_id`) REFERENCES `sf_guard_permission` (`id`) ON DELETE CASCADE)
    Ich habe leider keine Ahnung wie ich das beheben soll, da für mich auch unverständlich ist, wieso er sich um "add" und "update" sorgen macht, obwohl er sich nur um "delete" sorgen machen soll ... Wie gesagt ich bin neu auf dem Gebiet, vielleicht ist es etwas ganz simples ... Keine Ahnung
    Ach und ich benutze zur Zeit MySQL 5.0.41.
    Ich hoffe mir kann jemand von euch helfen.
    schonmal vielen Dank

    nambot
     

  2. #2
    Avatar von katosan
    katosan katosan ist offline Mitglied Silber
    Registriert seit
    Aug 2007
    Beiträge
    95
    was hast du denn für Nutzdaten in group und permission? Die Tabellen müssen gefüllt sein und in group_permission müssen in den feldern permission_id und group_id die entsprechenden indizes aus den anderen beiden tabellen eingetragen werden.

    gruß

    katosan
    Geändert von katosan (02.07.08 um 12:56 Uhr)
     

  3. #3
    Nambot Nambot ist offline Mitglied Bronze
    Registriert seit
    May 2004
    Beiträge
    44
    Vielen Dank für deine Antwort.
    Habe mir dann mal den Query angeschaut (war automatisch generiert mit Doctrine), und er hatte sich geweigert "permission_id" beim Insert in die Verknüfungstabelle mit anzugeben. Weiß nicht genau warum. Habe dann die Primary Keys entfernt und eine extra Spalte id hinzugefügt, dann hat es funktioniert.
    Nicht die eleganteste Lösung, aber naja.
    Vielen Dank
     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 13.11.09, 18:19
  2. MYSQL: Cannot add or update a child row: a foreign key constraint fails
    Von basmati123 im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 29.07.08, 11:45
  3. [MySQL] Info's über Constraint-Verletzung?
    Von Arcaton im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 24.09.04, 14:25
  4. access vîolation
    Von derGugi im Forum Delphi, Kylix, Pascal
    Antworten: 2
    Letzter Beitrag: 15.04.03, 16:10