Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL ERRO 1005:Não é possível criar tabela (errno:150)


Você pode verificar o status do InnoDB (SHOW ENGINE INNODB STATUS ) para determinar o motivo exato pelo qual as restrições estão falhando. A outra opção é adicionar as restrições de chave estrangeira após criar a tabela.

No seu caso, parece que está faltando o tipo de motor. Os tipos de coluna também devem corresponder. As chaves primárias nas tabelas referenciadas são provavelmente NOT NULL , e eles não são assim em 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;