При тестване външните ключове не се създават на моята машина с помощта на този синтаксис:
CREATE TABLE bugs (
...
reported_by VARCHAR(100) REFERENCES accounts(account_name),
...
) ENGINE = INNODB;
Но те са, когато използвам този израз за създаване:
CREATE TABLE bugs (
...
reported_by VARCHAR(100),
...
FOREIGN KEY (reported_by) REFERENCES accounts(account_name)
) ENGINE = INNODB;
Лесен начин да видите дали съществуват външни ключове в таблица е:
show create table bugs_products
Или можете да направите заявка за информационната схема:
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'
Също така проверете дали използвате механизма за съхранение на InnoDB. Двигателят MyISAM не поддържа външни ключове. Можете да намерите двигателя като:
select table_schema, table_name, engine
from information_schema.TABLES
where table_name = 'bugs'
Ако се опитате да създадете външен ключ в таблица MyISAM, той безшумно ще изхвърли препратките и ще се преструва, че успява.