sql >> Databáze >  >> RDS >> Mysql

CHYBA MySQL 1005:Nelze vytvořit tabulku (chyba:150)

Můžete zkontrolovat stav InnoDB (SHOW ENGINE INNODB STATUS ) určit přesný důvod, proč omezení selhávají. Další možností je přidat omezení cizího klíče po vytvoření tabulky.

Ve vašem případě se zdá, že vám chybí typ motoru. Musí se také shodovat typy sloupců. Primární klíč v odkazovaných tabulkách je s největší pravděpodobností NOT NULL a v messaInScena tomu tak není .

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. Mysql v PHP - jak aktualizovat pouze jeden řádek v tabulce, ale s největším ID číslem

  2. Použití INSERT s databází PostgreSQL pomocí Pythonu

  3. mySQL:znaková sada utf8 v tabulce indexu a chyba duplicitního klíče

  4. MySQL JOIN, GROUP BY, ORDER BY