Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql innodb :la table describe n'affiche pas les références des colonnes, qu'est-ce qui les affiche ?

Lors des tests, les clés étrangères ne sont pas créées sur ma machine avec cette syntaxe :

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

Mais ils le sont quand j'utilise cette instruction create :

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

Un moyen simple de voir si des clés étrangères existent sur une table est :

show create table bugs_products

Ou vous pouvez interroger le schéma d'informations :

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'

Vérifiez également que vous utilisez le moteur de stockage InnoDB. Le moteur MyISAM ne prend pas en charge les clés étrangères. Vous pouvez trouver le moteur comme :

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

Si vous essayez de créer une clé étrangère sur une table MyISAM, elle supprimera silencieusement les références et prétendra réussir.