Mysql
 sql >> Base de données >  >> RDS >> Mysql

ERREUR MySQL 1005 :Impossible de créer la table (errno : 150)

Vous pouvez vérifier le statut d'InnoDB (SHOW ENGINE INNODB STATUS ) pour déterminer la raison exacte de l'échec des contraintes. L'autre option consiste à ajouter les contraintes de clé étrangère après avoir créé la table.

Dans votre cas, il semble qu'il vous manque le type de moteur. Les types de colonne doivent également correspondre. Les clés primaires des tables référencées sont très probablement NOT NULL , et ils ne le sont pas dans 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;