sql >> Database >  >> RDS >> Mysql

MySQL ERROR 1005:Kan geen tabel maken (fout:150)

U kunt de status van InnoDB controleren (SHOW ENGINE INNODB STATUS ) om de exacte reden te bepalen waarom de beperkingen niet werken. De andere optie is om de externe-sleutelbeperkingen toe te voegen na het maken van de tabel.

In jouw geval lijkt het erop dat je het motortype mist. De kolomtypen moeten ook overeenkomen. De primaire sleutels in de tabellen waarnaar wordt verwezen zijn hoogstwaarschijnlijk NOT NULL , en dat is niet zo 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;


  1. Oracle kritieke patch-update – oktober 2020

  2. Een databasemodel voor een online-enquête. Deel 2

  3. Naamgevingsstrategie in slaapstand wijzigen van tabelnamen

  4. php gebruiken om GROUP_CONCAT('column x') waarden te retourneren