Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL ERROR 1005:Tabelle kann nicht erstellt werden (Fehlernummer:150)

Sie können den Status von InnoDB überprüfen (SHOW ENGINE INNODB STATUS ), um den genauen Grund für das Fehlschlagen der Einschränkungen zu ermitteln. Die andere Option besteht darin, die Fremdschlüsseleinschränkungen nach dem Erstellen der Tabelle hinzuzufügen.

In Ihrem Fall scheint Ihnen der Motortyp zu fehlen. Auch die Spaltentypen müssen übereinstimmen. Die Primärschlüssel der referenzierten Tabellen sind höchstwahrscheinlich NOT NULL , und sie sind es nicht in messaInScena .

create table spazio
  (
    nome             varchar(20) NOT NULL primary key, 
    indirizzo        varchar(40) not null,
    pianta           varchar(20),
    capienza         smallint
  ) ENGINE=InnoDB;

create table spettacolo
  (
    titolo             varchar(40) NOT NULL primary key,  
    descrizione        LONGBLOB,
    annoProduzione     char(4)
  ) ENGINE=InnoDB;

create table messaInScena
  (
    data               date,  
    ora                time,
    spazio             varchar(20) NOT NULL,
    spettacolo         varchar(40) NOT NULL,
    postiDisponibili   smallint,
    prezzoIntero       decimal(5,2),
    prezzoRidotto      decimal(5,2),
    prezzoStudenti     decimal(5,2),
    primary key (data, ora, spazio),
    foreign key (spazio) references spazio(nome) 
on update cascade on delete set null,
    foreign key (spettacolo) references spettacolo(titolo) 
on update cascade on delete set null,
    constraint RA3_1 check (postiDisponibili >= 0)     
  ) ENGINE=InnoDB;