Saat pengujian, kunci asing tidak dibuat di mesin saya menggunakan sintaks ini:
CREATE TABLE bugs (
...
reported_by VARCHAR(100) REFERENCES accounts(account_name),
...
) ENGINE = INNODB;
Tapi itulah saat saya menggunakan pernyataan buat ini:
CREATE TABLE bugs (
...
reported_by VARCHAR(100),
...
FOREIGN KEY (reported_by) REFERENCES accounts(account_name)
) ENGINE = INNODB;
Cara mudah untuk melihat apakah kunci asing ada di tabel adalah:
show create table bugs_products
Atau Anda dapat menanyakan skema informasi:
select
table_schema
, table_name
, column_name
, referenced_table_schema
, referenced_table_name
, referenced_column_name
from information_schema.KEY_COLUMN_USAGE
where table_name = 'bugs'
Periksa juga apakah Anda menggunakan mesin penyimpanan InnoDB. Mesin MyISAM tidak mendukung kunci asing. Anda dapat menemukan mesin seperti:
select table_schema, table_name, engine
from information_schema.TABLES
where table_name = 'bugs'
Jika Anda mencoba membuat kunci asing pada tabel MyISAM, maka referensi akan dibuang secara diam-diam dan berpura-pura berhasil.