sql >> Base de Datos >  >> RDS >> Mysql

MySQL ERROR 1005:No se puede crear la tabla (errno:150)

Puede verificar el estado de InnoDB (SHOW ENGINE INNODB STATUS ) para determinar la razón exacta por la que fallan las restricciones. La otra opción es agregar las restricciones de clave externa después de crear la tabla.

En su caso, parece que le falta el tipo de motor. Los tipos de columna también deben coincidir. Lo más probable es que la clave principal en las tablas a las que se hace referencia sea NOT NULL , y no lo son tanto en 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;