Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql innodb:Die Beschreibungstabelle zeigt keine Spaltenreferenzen an, was zeigt sie an?

Beim Testen werden die Fremdschlüssel auf meinem Computer nicht mit dieser Syntax erstellt:

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

Aber sie sind es, wenn ich diese create-Anweisung verwende:

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

Eine einfache Möglichkeit, um zu sehen, ob Fremdschlüssel in einer Tabelle vorhanden sind, ist:

show create table bugs_products

Oder Sie können das Informationsschema abfragen:

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'

Überprüfen Sie auch, ob Sie die InnoDB-Speicher-Engine verwenden. Die MyISAM-Engine unterstützt keine Fremdschlüssel. Sie finden die Engine wie folgt:

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

Wenn Sie versuchen, einen Fremdschlüssel für eine MyISAM-Tabelle zu erstellen, werden die Referenzen stillschweigend verworfen und vorgetäuscht, erfolgreich zu sein.