Vid testning skapas inte främmande nycklar på min maskin med denna syntax:
CREATE TABLE bugs (
...
reported_by VARCHAR(100) REFERENCES accounts(account_name),
...
) ENGINE = INNODB;
Men det är de när jag använder den här skapa-satsen:
CREATE TABLE bugs (
...
reported_by VARCHAR(100),
...
FOREIGN KEY (reported_by) REFERENCES accounts(account_name)
) ENGINE = INNODB;
Ett enkelt sätt att se om främmande nycklar finns på en tabell är:
show create table bugs_products
Eller så kan du fråga informationsschemat:
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'
Kontrollera också att du använder InnoDB-lagringsmotorn. MyISAM-motorn stöder inte främmande nycklar. Du kan hitta motorn som:
select table_schema, table_name, engine
from information_schema.TABLES
where table_name = 'bugs'
Om du försöker skapa en främmande nyckel på en MyISAM-tabell, kommer den tyst att förkasta referenserna och låtsas lyckas.