sql >> Databasteknik >  >> RDS >> Mysql

mysql innodb:beskriv tabellen visar inte kolumnreferenser, vad visar dem?

Vid testning skapas inte främmande nycklar på min maskin med denna syntax:

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

Men det är de när jag använder den här skapa-satsen:

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

Ett enkelt sätt att se om främmande nycklar finns på en tabell är:

show create table bugs_products

Eller så kan du fråga informationsschemat:

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'

Kontrollera också att du använder InnoDB-lagringsmotorn. MyISAM-motorn stöder inte främmande nycklar. Du kan hitta motorn som:

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

Om du försöker skapa en främmande nyckel på en MyISAM-tabell, kommer den tyst att förkasta referenserna och låtsas lyckas.




  1. Basicdatasource-anslutningsproblem med timeout (med mysql)

  2. Byt namn på en kolumn i MySQL

  3. Hur man genererar unikt slumpmässigt värde för varje användare i laravel och lägger till det i databasen

  4. Infoga en flerdimensionell php-array i en mysql-databas