Podczas testowania klucze obce nie są tworzone na moim komputerze przy użyciu następującej składni:
CREATE TABLE bugs (
...
reported_by VARCHAR(100) REFERENCES accounts(account_name),
...
) ENGINE = INNODB;
Ale są, gdy używam tej instrukcji tworzenia:
CREATE TABLE bugs (
...
reported_by VARCHAR(100),
...
FOREIGN KEY (reported_by) REFERENCES accounts(account_name)
) ENGINE = INNODB;
Łatwym sposobem sprawdzenia, czy klucze obce istnieją w tabeli, jest:
show create table bugs_products
Możesz też zapytać o schemat informacji:
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'
Sprawdź również, czy używasz silnika pamięci masowej InnoDB. Silnik MyISAM nie obsługuje kluczy obcych. Możesz znaleźć silnik:
select table_schema, table_name, engine
from information_schema.TABLES
where table_name = 'bugs'
Jeśli spróbujesz utworzyć klucz obcy w tabeli MyISAM, po cichu odrzuci on odniesienia i będzie udawał, że się powiódł.