Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL ERROR 1005:Tidak dapat membuat tabel (errno:150)

Anda dapat memeriksa status InnoDB (SHOW ENGINE INNODB STATUS ) untuk menentukan alasan pasti mengapa kendala gagal. Opsi lainnya adalah menambahkan batasan kunci asing setelah membuat tabel.

Dalam kasus Anda, tampaknya Anda kehilangan jenis mesin. Jenis kolom juga harus cocok. Kunci utama pada tabel yang direferensikan kemungkinan besar NOT NULL , dan tidak demikian di 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. Buat tampilan dengan kolom num_rows - MySQL

  2. SQL banyak ke banyak pilih

  3. Bagaimana cara menjatuhkan semua tabel dalam database tanpa menjatuhkan database itu sendiri?

  4. Apakah Anda hanya memperbarui bidang yang diubah atau semua bidang?

  5. Cetak kueri tunggal SQL (Yii 1.x)