Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql innodb:opis tabeli nie pokazuje referencji do kolumn, co je pokazuje?

Podczas testowania klucze obce nie są tworzone na moim komputerze przy użyciu następującej składni:

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

Ale są, gdy używam tej instrukcji tworzenia:

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

Łatwym sposobem sprawdzenia, czy klucze obce istnieją w tabeli, jest:

show create table bugs_products

Możesz też zapytać o schemat informacji:

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'

Sprawdź również, czy używasz silnika pamięci masowej InnoDB. Silnik MyISAM nie obsługuje kluczy obcych. Możesz znaleźć silnik:

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

Jeśli spróbujesz utworzyć klucz obcy w tabeli MyISAM, po cichu odrzuci on odniesienia i będzie udawał, że się powiódł.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiedy powinienem używać indeksu złożonego?

  2. Wstawianie daty z formularza za pomocą PHP Mysql

  3. Wyszukiwanie i filtrowanie / poprawianie wyników bazy danych w Laravel 4

  4. Usuń rekord z konsoli — Ruby on Rails

  5. Prosty przykład relacji wiele-do-wielu przy użyciu Sequelize