Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL ERROR 1005:Nie można utworzyć tabeli (errno:150)

Możesz sprawdzić stan InnoDB (SHOW ENGINE INNODB STATUS ), aby określić dokładny powód, dla którego ograniczenia nie działają. Inną opcją jest dodanie ograniczeń klucza obcego po utworzeniu tabeli.

W Twoim przypadku wygląda na to, że brakuje Ci typu silnika. Typy kolumn również muszą być zgodne. Klucz podstawowy w tabelach, do których się odwołuje, najprawdopodobniej NOT NULL , a nie są tak w 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wprowadzanie zmian w wielu rekordach na podstawie zmiany pojedynczego rekordu za pomocą SQL

  2. Czy mogę przekonwertować ten znak utf8?

  3. Jak sprawić, by zapytanie nie zwróciło nic, gdy nie ma warunków?

  4. Jak uzyskać id po zapisanym obiekcie w db w JPA?

  5. Wykonywanie instrukcji INSERT ... SELECT atomic