sql >> Database teknologi >  >> RDS >> Mysql

mysql innodb:beskriv tabel viser ikke kolonnereferencer, hvad viser dem?

Ved test oprettes fremmednøglerne ikke på min maskine ved hjælp af denne syntaks:

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

Men det er de, når jeg bruger denne oprettelseserklæring:

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

En nem måde at se, om der findes fremmednøgler på en tabel, er:

show create table bugs_products

Eller du kan forespørge informationsskemaet:

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'

Tjek også, at du bruger InnoDB-lagringsmotoren. MyISAM-motoren understøtter ikke fremmednøgler. Du kan finde motoren som:

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

Hvis du forsøger at oprette en fremmednøgle på en MyISAM-tabel, vil den lydløst kassere referencerne og foregive at lykkes.




  1. php/mysql med flere forespørgsler

  2. Udvid et GROUP BY og HAVING resultatsæt

  3. as3, MySQL PHP-forbindelse

  4. postgres kolonne alias problem