Beim Testen werden die Fremdschlüssel auf meinem Computer nicht mit dieser Syntax erstellt:
CREATE TABLE bugs (
...
reported_by VARCHAR(100) REFERENCES accounts(account_name),
...
) ENGINE = INNODB;
Aber sie sind es, wenn ich diese create-Anweisung verwende:
CREATE TABLE bugs (
...
reported_by VARCHAR(100),
...
FOREIGN KEY (reported_by) REFERENCES accounts(account_name)
) ENGINE = INNODB;
Eine einfache Möglichkeit, um zu sehen, ob Fremdschlüssel in einer Tabelle vorhanden sind, ist:
show create table bugs_products
Oder Sie können das Informationsschema abfragen:
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'
Überprüfen Sie auch, ob Sie die InnoDB-Speicher-Engine verwenden. Die MyISAM-Engine unterstützt keine Fremdschlüssel. Sie finden die Engine wie folgt:
select table_schema, table_name, engine
from information_schema.TABLES
where table_name = 'bugs'
Wenn Sie versuchen, einen Fremdschlüssel für eine MyISAM-Tabelle zu erstellen, werden die Referenzen stillschweigend verworfen und vorgetäuscht, erfolgreich zu sein.