Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

mysql innodb:a tabela de descrição não mostra referências de colunas, o que as mostra?


No teste, as chaves estrangeiras não são criadas na minha máquina usando esta sintaxe:
CREATE TABLE bugs (
  ...
  reported_by       VARCHAR(100) REFERENCES accounts(account_name),
  ...
 ) ENGINE = INNODB;

Mas eles são quando eu uso esta declaração de criação:
CREATE TABLE bugs (
  ...
  reported_by       VARCHAR(100),
  ...
  FOREIGN KEY (reported_by) REFERENCES accounts(account_name)
 ) ENGINE = INNODB;

Uma maneira fácil de ver se existem chaves estrangeiras em uma tabela é:
show create table bugs_products

Ou você pode consultar o esquema de informações:
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'

Verifique também se você está usando o mecanismo de armazenamento InnoDB. O mecanismo MyISAM não suporta chaves estrangeiras. Você pode encontrar o motor como:
select table_schema, table_name, engine
from information_schema.TABLES
where table_name = 'bugs'

Se você tentar criar uma chave estrangeira em uma tabela MyISAM, ela descartará silenciosamente as referências e fingirá ter sucesso.