sql >> Base de Datos >  >> RDS >> Mysql

mysql innodb:la tabla de descripción no muestra las referencias de las columnas, ¿qué las muestra?

En las pruebas, las claves foráneas no se crean en mi máquina usando esta sintaxis:

CREATE TABLE bugs (
  ...
  reported_by       VARCHAR(100) REFERENCES accounts(account_name),
  ...
 ) ENGINE = INNODB;

Pero lo son cuando uso esta declaración de creación:

CREATE TABLE bugs (
  ...
  reported_by       VARCHAR(100),
  ...
  FOREIGN KEY (reported_by) REFERENCES accounts(account_name)
 ) ENGINE = INNODB;

Una manera fácil de ver si existen claves foráneas en una tabla es:

show create table bugs_products

O puede consultar el esquema de información:

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'

También verifique que esté utilizando el motor de almacenamiento InnoDB. El motor MyISAM no admite claves foráneas. Puede encontrar el motor como:

select table_schema, table_name, engine
from information_schema.TABLES
where table_name = 'bugs'

Si intenta crear una clave externa en una tabla MyISAM, descartará silenciosamente las referencias y pretenderá tener éxito.