[SQL] Übungsaufgabe: Can't create table (errno: 150)

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Targa, 2. April 2012 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 2. April 2012
    Übungsaufgabe: Can't create table (errno: 150)

    Hoi,
    haben in der Vorlesung ne Übung. Jetzt hab ich das Ganze aus nem ER Modell in SQL geschrieben, meiner Meinung nach ist es auch richtig nur MYSQL meldet immer:
    PHP:
    18 : 36 : 17    CREATE TABLE bestellung  (    auftrnr INTEGER PRIMARY KEY ,    personnr INTEGER NOT NULL ,     FOREIGN KEY  ( personnr )     REFERENCES person  )     Error Code 1005. Can 't create table ' newdb . bestellung ' (errno: 150)

    PHP:
    CREATE TABLE person  (
        
    personnr INTEGER PRIMARY KEY ,
         
    name VARCHAR ( 60 NOT NULL ,
         
    vorname VARCHAR ( 60 NOT NULL
    );

    CREATE TABLE bestellung  (
         
    auftrnr INTEGER PRIMARY KEY ,
         
    personnr INTEGER NOT NULL ,
             
    FOREIGN KEY  ( personnr )
             
    REFERENCES person
    );

    CREATE TABLE produkt  (
         
    artnr INTEGER PRIMARY KEY ,
         
    bezeichnung VARCHAR ( 150 ),
         
    farbe VARCHAR ( 50 )
    );

    CREATE TABLE produkt_bestellung  (
         
    auftrnr INTEGER NOT NULL ,
         
    artnr INTEGER NOT NULL ,
         
    menge INTEGER NOT NULL ,
             
    FOREIGN KEY  ( auftrnr )
             
    REFERENCES bestellung ,
            
    FOREIGN KEY  ( artnr )
            
    REFERENCES produkt
    );

    Ich weiß nich mehr weiter, was ist falsch?
     
  2. 2. April 2012
    AW: Übungsaufgabe: Can't create table (errno: 150)

    Code:
    CREATE TABLE person (
     personnr INTEGER PRIMARY KEY,
     name VARCHAR(60) NOT NULL,
     vorname VARCHAR(60) NOT NULL
    );
    
    CREATE TABLE bestellung (
     auftrnr INTEGER PRIMARY KEY,
     personnr INTEGER NOT NULL,
     FOREIGN KEY (personnr)
     REFERENCES person(personnr)
    );
    
    CREATE TABLE produkt (
     artnr INTEGER PRIMARY KEY,
     bezeichnung VARCHAR(150),
     farbe VARCHAR(50)
    );
    
    CREATE TABLE produkt_bestellung (
     auftrnr INTEGER NOT NULL,
     artnr INTEGER NOT NULL,
     menge INTEGER NOT NULL,
     FOREIGN KEY (auftrnr)
     REFERENCES bestellung(auftrnr),
     FOREIGN KEY (artnr)
     REFERENCES produkt(artnr)
    ); 
    Code:
    mysql> describe bestellung;
    Database changed
    +----------+---------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +----------+---------+------+-----+---------+-------+
    | auftrnr | int(11) | NO | PRI | NULL | |
    | personnr | int(11) | NO | MUL | NULL | |
    +----------+---------+------+-----+---------+-------+
    2 rows in set (0.02 sec)
    scheint zu funktionieren
     
  3. 2. April 2012
    AW: Übungsaufgabe: Can't create table (errno: 150)

    Dann lag ich mit meiner Vermutung das es richtig ist ja richtig
    Allerdings gehts bei mir immer noch nicht.
    Weder mit der MySQL Workbench noch mit dem MySQL Command Line Client.

    Die erste Tabelle wird aber korrekt erzeugt:

    Code:
    mysql> describe person;
    +----------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +----------+-------------+------+-----+---------+-------+
    | personnr | int(11) | NO | PRI | NULL | |
    | name | varchar(60) | NO | | NULL | |
    | vorname | varchar(60) | NO | | NULL | |
    +----------+-------------+------+-----+---------+-------+
    3 rows in set (0.01 sec)

    -----------------

    PHP:
    CREATE TABLE produkt  (
         
    artnr INTEGER PRIMARY KEY ,
         
    bezeichnung VARCHAR ( 150 ),
         
    farbe VARCHAR ( 50 )
    );
    geht auch:

    Code:
    mysql> describe produkt;;
    +-------------+--------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------------+--------------+------+-----+---------+-------+
    | artnr | int(11) | NO | PRI | NULL | |
    | bezeichnung | varchar(150) | YES | | NULL | |
    | farbe | varchar(50) | YES | | NULL | |
    +-------------+--------------+------+-----+---------+-------+
    3 rows in set (0.01 sec);
    nur die Tabelle "bestellung" will er nicht machen:

    PHP:
    Dann lag ich mit meiner Vermutung das es richtig ist ja richtig  :)
    Allerdings gehts bei mir immer noch nicht
    Weder mit der MySQL Workbench noch mit dem MySQL Command Line Client .

    Die 
    erste Tabelle wird aber korrekt erzeugt :

    [
    CODE ] mysql describe person ;
    +----------+-------------+------+-----+---------+-------+
    Field     Type         Null  Key  | Default |  Extra  |
    +----------+-------------+------+-----+---------+-------+
    personnr  int ( 11 )     |  NO    PRI  NULL     |       |
    name      varchar ( 60 ) |  NO    |     |  NULL     |       |
    vorname   varchar ( 60 ) |  NO    |     |  NULL     |       |
    +----------+-------------+------+-----+---------+-------+
    3 rows in set  ( 0.01 sec )[/ CODE ]


    -----------------

    [
    PHP ] CREATE TABLE produkt  (
         
    artnr INTEGER PRIMARY KEY ,
         
    bezeichnung VARCHAR ( 150 ),
         
    farbe VARCHAR ( 50 )
    );
    geht auch:

    Code:
    mysql> describe produkt;;
    +-------------+--------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------------+--------------+------+-----+---------+-------+
    | artnr | int(11) | NO | PRI | NULL | |
    | bezeichnung | varchar(150) | YES | | NULL | |
    | farbe | varchar(50) | YES | | NULL | |
    +-------------+--------------+------+-----+---------+-------+
    3 rows in set (0.01 sec);
    nur die Tabelle "bestellung" will er nicht machen:

    PHP:
    CREATE TABLE bestellung  (
         
    auftrnr INTEGER PRIMARY KEY ,
         
    personnr INTEGER NOT NULL ,
             
    FOREIGN KEY  ( personnr )
             
    REFERENCES person
    );
    PHP:
    CREATE TABLE produkt_bestellung  (
         
    auftrnr INTEGER NOT NULL ,
         
    artnr INTEGER NOT NULL ,
         
    menge INTEGER NOT NULL ,
             
    FOREIGN KEY  ( auftrnr )
             
    REFERENCES bestellung ,
            
    FOREIGN KEY  ( artnr )
            
    REFERENCES produkt
    );
    geht auch nicht

    Ist doch total sinnlos? Was läuft bei mir schief?
     
  4. 2. April 2012
    AW: Übungsaufgabe: Can't create table (errno: 150)

    Code:
    REFERENCES person(personnr)
    du musst die beiträge hier schon lesen
     
  5. 2. April 2012
    AW: Übungsaufgabe: Can't create table (errno: 150)

    Ah shit
    Dachte du hast es nur gequotet.

    Danke dir!!
    -close-
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.