テストでは、外部キーは次の構文を使用して私のマシンに作成されません:
CREATE TABLE bugs (
...
reported_by VARCHAR(100) REFERENCES accounts(account_name),
...
) ENGINE = INNODB;
しかし、私がこのcreateステートメントを使用するときはそうです:
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テーブルに外部キーを作成しようとすると、参照がサイレントに破棄され、成功したふりをします。