2012-03-05 2 views
1

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

Я попытался использовать information_schema How to check if a column is already a foreign key?, но это привело к Unknown table 'REFERENTIAL_CONSTRAINTS' in information_schema. Возможно ли, что запрос для MsSQL и отличается от MySQL?

ответ

4
  1. В таблице, которая, вероятно, создается внешний ключ MyISAM. Перейти к просмотру Table Design и перейдите на вкладку Параметры, чтобы изменить таблицу Engine для InnoDB

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

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

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

+0

Возможно ли это сделать для всех таблиц сразу? Или установите по умолчанию Engine по умолчанию InnoDB? Или у этого есть недостатки? –

+2

@Webscrabbler никаких недостатков, но иногда MyISAM может быть быстрее, чем InnoDB. Например, MyISAM обрабатывает неблокирующие и не транзакционные совпадающие вставки. Также он не имеет кластеризации на первичном ключе (может быть и недостатком). И т. Д. Таким образом, могут возникнуть некоторые проблемы с производительностью, в зависимости от вашей рабочей нагрузки на таблицу. –

2

выполнить

SHOW CREATE TABLE myTable; 

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

ENGINE = InnoDB 

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

FOREIGN KEY (customer_id) REFERENCES customer(id) 

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

 Смежные вопросы

  • Нет связанных вопросов^_^