SQL错误:#1005 - 无法创建表

时间:2013-04-15 22:06:46

标签: mysql foreign-keys

这是我的代码:

 create table if not exists Pelajar (
    no_pelajar char(7) not null,
    nama varchar(30) not null,
    alamat varchar(50) not null,
    no_telepon varchar(10),
    grade integer not null,
    primary key (no_pelajar)
);

create table if not exists Kelas (
    kode_kelas char(5) not null,
    no_pengajar char(9) not null,
    no_pelajaran char(4) not null,
    ruang integer not null,
    waktu char(5) not null,
    primary key (kode_kelas)
);

create table if not exists Pelajaran (
    no_pelajaran char(4) not null,
    grade integer not null,
    subjek varchar(30) not null,
    primary key (no_pelajaran)
);

create table if not exists Pengajar (
    no_pengajar char(9) not null,
    nama varchar(30) not null,
    alamat varchar(50) not null,
    no_telepon varchar(10) not null,
    primary key (no_pengajar)
);

create table if not exists Pembayaran (
    no_pembayaran char(11) not null,
    status_pembayaran varchar(11) not null,
    tgl_pembayaran char(8) not null,
    primary key (no_pembayaran)
);

create table if not exists KartuAnggota (
    no_pelajar char(7) not null,
    kode_kelas char(5) not null
);

create table if not exists SlipPembayaran (
    no_pembayaran char(11) not null,
    no_pelajar char(7) not null
);

alter table SlipPembayaran
    add foreign key (no_pembayaran)
    references Pembayaran(no_pembayaran);

alter table SlipPembayaran  
    add foreign key (no_pelajar)
    references Pelajar(no_pelajar);

alter table KartuAnggota
    add foreign key (kode_kelas) 
    references  Kelas(kode_kelas);

alter table KartuAnggota
    add foreign key (no_pelajar)
    references Pelajar(no_pelajar); 

alter table Kelas
    add foreign key (no_pelajaran) 
    references  Pelajaran(no_pelajaran);

alter table Kelas
    add foreign key (no_pengajar) 
    references  Pengajar(no_pengajar);

=============================================== ================================== 运行代码后,我收到了消息: SQL查询:

ALTER TABLE KartuAnggota ADD FOREIGN KEY ( kode_kelas ) REFERENCES Kelas( kode_kelas ) ;
MySQL说:

#1005 - 无法创建表'bimbel。#sql-2f2c_1c6'(错误号:150)

你可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

如果重新创建已删除的表,则它必须具有符合引用它的外键约束的定义。它必须具有正确的列名和类型,并且必须在引用的键上具有索引,如前所述。如果不满足,则MySQL返回错误号1005并在错误消息中引用错误150.