Durante il test, le chiavi esterne non vengono create sulla mia macchina utilizzando questa sintassi:
CREATE TABLE bugs (
...
reported_by VARCHAR(100) REFERENCES accounts(account_name),
...
) ENGINE = INNODB;
Ma lo sono quando uso questa istruzione create:
CREATE TABLE bugs (
...
reported_by VARCHAR(100),
...
FOREIGN KEY (reported_by) REFERENCES accounts(account_name)
) ENGINE = INNODB;
Un modo semplice per vedere se esistono chiavi esterne su una tabella è:
show create table bugs_products
Oppure puoi interrogare lo schema delle informazioni:
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'
Verifica anche di utilizzare il motore di archiviazione InnoDB. Il motore MyISAM non supporta le chiavi esterne. Puoi trovare il motore come:
select table_schema, table_name, engine
from information_schema.TABLES
where table_name = 'bugs'
Se provi a creare una chiave esterna su una tabella MyISAM, eliminerà silenziosamente i riferimenti e farà finta di avere successo.