Как проверить, создан ли внешний ключ - PullRequest
1 голос
/ 05 марта 2012

Я создал внешний ключ с помощью NaviCat (приложения MySQL), но как только я его создаю, он исчезает из списка внешних ключей и добавляется новый индекс. Означает ли это, что что-то пошло не так или это нормально?

Я пытался использовать information_schema Как проверить, является ли столбец уже внешним ключом? , но это привело к Unknown table 'REFERENTIAL_CONSTRAINTS' in information_schema. Возможно ли, что запрос для MsSQL и отличается от MySQL?

Ответы [ 2 ]

4 голосов
/ 05 марта 2012
  1. Таблица, которую вы, вероятно, создаете внешним ключом, - MyISAM. Перейдите в представление «Дизайн таблицы» и перейдите на вкладку «Параметры», чтобы изменить таблицу Engine на InnoDB

  2. Вы можете изменить все свои таблицы на InnoDB, следуя инструкциям на http://kevin.vanzonneveld.net/techblog/article/convert_all_tables_to_innodb_in_one_go/

  3. Добавьте default-storage-engine = innodb в раздел [mysqld] вашего файла конфигурации MySQL (обычно my.cnf) из http://dev.mysql.com/doc/refman/5.5/en/innodb-default-se.html

В конце концов, в MySQL 5.5 нет недостатков. InnoDB - это механизм хранения по умолчанию.

2 голосов
/ 05 марта 2012

выполнить

SHOW CREATE TABLE myTable;

и затем проверить

ENGINE = InnoDB

, если это так, вы можете использовать внешние ключи.проверьте, содержит ли он что-то вроде этого:

FOREIGN KEY (customer_id)  REFERENCES customer(id)

надеюсь, что это поможет!

...